update readme
ccf2c64 parent: 6e1128e modified
README.md +44 -36 | @@ -1,6 +1,6 @@ | ||
| 1 | 1 | # Love |
| 2 | 2 | |
| 3 | -The official LOVE token. | |
| 3 | +The one and only LOVE token. | |
| 4 | 4 | |
| 5 | 5 | ## Install |
| 6 | 6 | |
| @@ -9,16 +9,49 @@ forge install | ||
| 9 | 9 | cp .env.example .env |
| 10 | 10 | ``` |
| 11 | 11 | |
| 12 | -## Build & test | |
| 12 | +## Build | |
| 13 | 13 | |
| 14 | 14 | ```shell |
| 15 | -forge build # compile | |
| 16 | -forge test # run tests | |
| 17 | -forge test -vvv # with traces | |
| 18 | -forge fmt # format | |
| 19 | -anvil # local node | |
| 15 | +forge build | |
| 20 | 16 | ``` |
| 21 | 17 | |
| 18 | +## Test | |
| 19 | + | |
| 20 | +```shell | |
| 21 | +forge test | |
| 22 | +``` | |
| 23 | + | |
| 24 | +## Deploy | |
| 25 | + | |
| 26 | +Deployment uses CREATE2, so the token has the same address on every EVM network. | |
| 27 | +Bringing up a chain is registry, then registration, then token — `run()` does | |
| 28 | +all three and skips whichever has already happened. | |
| 29 | + | |
| 30 | +```shell | |
| 31 | +forge script script/Love.s.sol:LoveScript --sig 'predict()' # print the address | |
| 32 | + | |
| 33 | +WETH=0x4200000000000000000000000000000000000006 \ | |
| 34 | +forge script script/Love.s.sol:LoveScript \ | |
| 35 | + --rpc-url base_sepolia \ | |
| 36 | + --account "$DEPLOYER_ACCOUNT" \ | |
| 37 | + --broadcast \ | |
| 38 | + --verify | |
| 39 | +``` | |
| 40 | + | |
| 41 | +`WETH` defaults to the OP Stack predeploy and is ignored once a wETH is | |
| 42 | +registered. Registration sends 1 wei, which stays in the registry. | |
| 43 | + | |
| 44 | +To check determinism for real, deploy on two local chains and compare: | |
| 45 | + | |
| 46 | +```shell | |
| 47 | +./script/multichain-check.sh | |
| 48 | +``` | |
| 49 | + | |
| 50 | +It starts two anvil nodes (chain IDs 31337 and 31338), gives them *different* | |
| 51 | +wETH implementations at *different* addresses, brings both up, and exits | |
| 52 | +non-zero if the two LOVE addresses differ. Override `PORT_A`, `PORT_B`, | |
| 53 | +`CHAIN_ID_A`, `CHAIN_ID_B` or `SALT` as needed. | |
| 54 | + | |
| 22 | 55 | ## Privacy |
| 23 | 56 | |
| 24 | 57 | Besides the plain `deposit(uint256)`, LOVE can be locked behind a secret |
| @@ -79,36 +112,11 @@ address before treating a deployment as the real one. | ||
| 79 | 112 | Full design rationale, the allowlist's contents, and how to verify determinism |
| 80 | 113 | yourself: see [docs/MULTICHAIN.md](docs/MULTICHAIN.md). |
| 81 | 114 | |
| 82 | -## Deploy | |
| 83 | - | |
| 84 | -Deployment uses CREATE2, so the token has the same address on every EVM network. | |
| 85 | -Bringing up a chain is registry, then registration, then token — `run()` does | |
| 86 | -all three and skips whichever has already happened. | |
| 87 | - | |
| 88 | -```shell | |
| 89 | -forge script script/Love.s.sol:LoveScript --sig 'predict()' # print the address | |
| 90 | - | |
| 91 | -WETH=0x4200000000000000000000000000000000000006 \ | |
| 92 | -forge script script/Love.s.sol:LoveScript \ | |
| 93 | - --rpc-url base_sepolia \ | |
| 94 | - --account "$DEPLOYER_ACCOUNT" \ | |
| 95 | - --broadcast \ | |
| 96 | - --verify | |
| 97 | -``` | |
| 98 | - | |
| 99 | -`WETH` defaults to the OP Stack predeploy and is ignored once a wETH is | |
| 100 | -registered. Registration sends 1 wei, which stays in the registry. | |
| 101 | - | |
| 102 | -To check determinism for real, deploy on two local chains and compare: | |
| 103 | - | |
| 104 | -```shell | |
| 105 | -./script/multichain-check.sh | |
| 106 | -``` | |
| 115 | +## Docs | |
| 107 | 116 | |
| 108 | -It starts two anvil nodes (chain IDs 31337 and 31338), gives them *different* | |
| 109 | -wETH implementations at *different* addresses, brings both up, and exits | |
| 110 | -non-zero if the two LOVE addresses differ. Override `PORT_A`, `PORT_B`, | |
| 111 | -`CHAIN_ID_A`, `CHAIN_ID_B` or `SALT` as needed. | |
| 117 | +- [Multichain deployment](docs/MULTICHAIN.md) — CREATE2, the codehash allowlist, and verifying determinism | |
| 118 | +- [Privacy](docs/PRIVACY.md) — sending LOVE by secret instead of by address | |
| 119 | +- [Supported networks](docs/SUPPORTED_NETWORKS.md) — where LOVE deploys today and what could be added | |
| 112 | 120 | |
| 113 | 121 | ## License |
| 114 | 122 | |
| @@ -1,6 +1,6 @@ | |||
| 1 | # Love | 1 | # Love |
| 2 | 2 | ||
| 3 | -The official LOVE token. | 3 | +The one and only LOVE token. |
| 4 | 4 | ||
| 5 | ## Install | 5 | ## Install |
| 6 | 6 | ||
| @@ -9,16 +9,49 @@ forge install | |||
| 9 | cp .env.example .env | 9 | cp .env.example .env |
| 10 | ``` | 10 | ``` |
| 11 | 11 | ||
| 12 | -## Build & test | 12 | +## Build |
| 13 | 13 | ||
| 14 | ```shell | 14 | ```shell |
| 15 | -forge build # compile | 15 | +forge build |
| 16 | -forge test # run tests | ||
| 17 | -forge test -vvv # with traces | ||
| 18 | -forge fmt # format | ||
| 19 | -anvil # local node | ||
| 20 | ``` | 16 | ``` |
| 21 | 17 | ||
| 18 | +## Test | ||
| 19 | + | ||
| 20 | +```shell | ||
| 21 | +forge test | ||
| 22 | +``` | ||
| 23 | + | ||
| 24 | +## Deploy | ||
| 25 | + | ||
| 26 | +Deployment uses CREATE2, so the token has the same address on every EVM network. | ||
| 27 | +Bringing up a chain is registry, then registration, then token — `run()` does | ||
| 28 | +all three and skips whichever has already happened. | ||
| 29 | + | ||
| 30 | +```shell | ||
| 31 | +forge script script/Love.s.sol:LoveScript --sig 'predict()' # print the address | ||
| 32 | + | ||
| 33 | +WETH=0x4200000000000000000000000000000000000006 \ | ||
| 34 | +forge script script/Love.s.sol:LoveScript \ | ||
| 35 | + --rpc-url base_sepolia \ | ||
| 36 | + --account "$DEPLOYER_ACCOUNT" \ | ||
| 37 | + --broadcast \ | ||
| 38 | + --verify | ||
| 39 | +``` | ||
| 40 | + | ||
| 41 | +`WETH` defaults to the OP Stack predeploy and is ignored once a wETH is | ||
| 42 | +registered. Registration sends 1 wei, which stays in the registry. | ||
| 43 | + | ||
| 44 | +To check determinism for real, deploy on two local chains and compare: | ||
| 45 | + | ||
| 46 | +```shell | ||
| 47 | +./script/multichain-check.sh | ||
| 48 | +``` | ||
| 49 | + | ||
| 50 | +It starts two anvil nodes (chain IDs 31337 and 31338), gives them *different* | ||
| 51 | +wETH implementations at *different* addresses, brings both up, and exits | ||
| 52 | +non-zero if the two LOVE addresses differ. Override `PORT_A`, `PORT_B`, | ||
| 53 | +`CHAIN_ID_A`, `CHAIN_ID_B` or `SALT` as needed. | ||
| 54 | + | ||
| 22 | ## Privacy | 55 | ## Privacy |
| 23 | 56 | ||
| 24 | Besides the plain `deposit(uint256)`, LOVE can be locked behind a secret | 57 | Besides the plain `deposit(uint256)`, LOVE can be locked behind a secret |
| @@ -79,36 +112,11 @@ address before treating a deployment as the real one. | |||
| 79 | Full design rationale, the allowlist's contents, and how to verify determinism | 112 | Full design rationale, the allowlist's contents, and how to verify determinism |
| 80 | yourself: see [docs/MULTICHAIN.md](docs/MULTICHAIN.md). | 113 | yourself: see [docs/MULTICHAIN.md](docs/MULTICHAIN.md). |
| 81 | 114 | ||
| 82 | -## Deploy | 115 | +## Docs |
| 83 | - | ||
| 84 | -Deployment uses CREATE2, so the token has the same address on every EVM network. | ||
| 85 | -Bringing up a chain is registry, then registration, then token — `run()` does | ||
| 86 | -all three and skips whichever has already happened. | ||
| 87 | - | ||
| 88 | -```shell | ||
| 89 | -forge script script/Love.s.sol:LoveScript --sig 'predict()' # print the address | ||
| 90 | - | ||
| 91 | -WETH=0x4200000000000000000000000000000000000006 \ | ||
| 92 | -forge script script/Love.s.sol:LoveScript \ | ||
| 93 | - --rpc-url base_sepolia \ | ||
| 94 | - --account "$DEPLOYER_ACCOUNT" \ | ||
| 95 | - --broadcast \ | ||
| 96 | - --verify | ||
| 97 | -``` | ||
| 98 | - | ||
| 99 | -`WETH` defaults to the OP Stack predeploy and is ignored once a wETH is | ||
| 100 | -registered. Registration sends 1 wei, which stays in the registry. | ||
| 101 | - | ||
| 102 | -To check determinism for real, deploy on two local chains and compare: | ||
| 103 | - | ||
| 104 | -```shell | ||
| 105 | -./script/multichain-check.sh | ||
| 106 | -``` | ||
| 107 | 116 | ||
| 108 | -It starts two anvil nodes (chain IDs 31337 and 31338), gives them *different* | 117 | +- [Multichain deployment](docs/MULTICHAIN.md) — CREATE2, the codehash allowlist, and verifying determinism |
| 109 | -wETH implementations at *different* addresses, brings both up, and exits | 118 | +- [Privacy](docs/PRIVACY.md) — sending LOVE by secret instead of by address |
| 110 | -non-zero if the two LOVE addresses differ. Override `PORT_A`, `PORT_B`, | 119 | +- [Supported networks](docs/SUPPORTED_NETWORKS.md) — where LOVE deploys today and what could be added |
| 111 | -`CHAIN_ID_A`, `CHAIN_ID_B` or `SALT` as needed. | ||
| 112 | 120 | ||
| 113 | ## License | 121 | ## License |
| 114 | 122 | ||