Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update Verify deployment on Mainnet document #231

Merged
merged 1 commit into from
Apr 2, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 69 additions & 67 deletions verifyMainnetDeployment/verifyMainnetProofVerifier.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Verify deployment on Mainnet the proof verifier smart contract (elderberry-fork.8)
# Verify deployment on Mainnet the proof verifier smart contract (elderberry2-fork.9)

In order to verify the smart contract, you will need a machine with at least 256GB of RAM and 16 cores.

Expand Down Expand Up @@ -82,7 +82,7 @@ this step takes less than 1 minute.
cd ~
git clone https://github.com/0xPolygonHermez/zkevm-proverjs.git
cd zkevm-proverjs
git checkout 1f228c110be466ec8b91d251713df4194ba49aeb
git checkout c4a2ce7617cb34b2c119742c2adbcd11ac435ec4
npm install
tmux -c "npm run buildsetup --bctree=../zkevm-prover/build/bctree"
```
Expand Down Expand Up @@ -151,7 +151,7 @@ sha256sum contracts/verifiers/FflonkVerifier.sol
The result should be:

```
9bf2d96c589a64ba8ebde36f280993d1dc0ac3ca3cac1d09b5550055b8a523e8
ad7faf985475359b115d73ba216e7f6feb9cb3181889e65f62e23904da40b33a
```

To compile smartcontract execute following command:
Expand All @@ -167,28 +167,28 @@ npx hardhat compile
Bytecode of smartcontract was on bytecode property of json file _FflonkVerifier_ generated on path _artifacts/contracts/verifiers/FflonkVerifier.sol/_

```
608060405234801561001057600080fd5b506159
ee80620000216000396000f3fe60806040523480
1561001057600080fd5b506004361061002b5760
003560e01c80639121da8a14610030575b600080
fd5b61004361003e366004615973565b61005756
5b604051901515815260200160405180910390f3
5b6000615901565b6040516104c0820151808252
6020820191507f30644e72e131a029b85045b681
81585d2833e84879b9709143e1f593f000000161
04e0840151820990508082526020820191507f30
608060405234801561000f575f80fd5b506159c7
806200001e5f395ff3fe60806040523480156100
0f575f80fd5b5060043610610029575f3560e01c
80639121da8a1461002d575b5f80fd5b61004061
003b366004615950565b610054565b6040519015
15815260200160405180910390f35b5f6158e056
5b6040516104c08201518082526020820191507f
30644e72e131a029b85045b68181585d2833e848
79b9709143e1f593f00000016104e08401518209
90508082526020820191507f30644e72e131a029
:
:
81612878565b61593a83826128b1565b61594381
612911565b61594c81613e61565b615955816145
59565b61595e816151f0565b615967816156ee56
5b90508060005260206000f35b60008061032080
848603121561598857600080fd5b610300840185
81111561599a57600080fd5b8493508582860111
156159ac57600080fd5b80925050509250929050
56fea2646970667358221220065c100f41ce696b
303e853b86cdaa6a5ef43dec684aa118e566f3fa
613427c464736f6c63430008140033
5b61590f8161286e565b61591983826128a7565b
61592281612906565b61592b81613e54565b6159
3481614549565b61593d816151d0565b61594681
6156ce565b9050805f5260205ff35b5f80610320
808486031215615963575f80fd5b610300840185
811115615974575f80fd5b849350858286011115
615985575f80fd5b8092505050925092905056fe
a2646970667358221220f9204a6729ab3cfd7d00
8e42e9e609c5982c2ce36f4db2fdd5da2d7ad03d
505064736f6c63430008140033

```

Expand All @@ -202,29 +202,29 @@ cat ./artifacts/contracts/verifiers/FflonkVerifier.sol/FflonkVerifier.json | jq
The result should be:

```
27270e1846e7e8512ab9cc311a96a1425a03adda282b18d5beb521dfe09c3d22
a830254dd0e50c7fb306d028c0fed5927027814c3151822d16f26e802615ecff
```

## Download bytecode of deployed smartcontract

To download bytecode of deployed smartcontract, need the address of smart contract, in this case it's _0x4AaBBA26EA9E7A7fbD052d17a167e6aE3F8eC7Be_.
To download bytecode of deployed smartcontract, need the address of smart contract, in this case it's _0x0775e11309d75aA6b0967917fB0213C5673eDf81_.

### Download by copying data manually

Go to Etherscan or Beaconcha to get transaction bytecode.

Associated with address _0x4AaBBA26EA9E7A7fbD052d17a167e6aE3F8eC7Be_ found the transacction _0x6cc2cbf18cefe30ec2b4776b525e187f06f88bb52fe94c1b0dd2629b199fd9c9_.
Associated with address _0x0775e11309d75aA6b0967917fB0213C5673eDf81_ found the transacction _0x99c654b2338dc6e9f438b82acd5eb8af2fa2d2fe69a387714f2b2fa935ee8dbe_.

- ### Etherscan (https://etherscan.io)
https://etherscan.io/address/0x4AaBBA26EA9E7A7fbD052d17a167e6aE3F8eC7Be
https://etherscan.io/tx/0x6cc2cbf18cefe30ec2b4776b525e187f06f88bb52fe94c1b0dd2629b199fd9c9
https://etherscan.io/address/0x0775e11309d75aA6b0967917fB0213C5673eDf81
https://etherscan.io/tx/0x99c654b2338dc6e9f438b82acd5eb8af2fa2d2fe69a387714f2b2fa935ee8dbe


Click to see more > Input Data > Select all data and copy to clipboard.
Click to show more > Input Data > Select all data and copy to clipboard.

- ### Beacocha (https://beaconcha.in)
https://beaconcha.in/address/0x4AaBBA26EA9E7A7fbD052d17a167e6aE3F8eC7Be
https://beaconcha.in/tx/0x6cc2cbf18cefe30ec2b4776b525e187f06f88bb52fe94c1b0dd2629b199fd9c9
https://beaconcha.in/address/0x0775e11309d75aA6b0967917fB0213C5673eDf81
https://beaconcha.in/tx/0x99c654b2338dc6e9f438b82acd5eb8af2fa2d2fe69a387714f2b2fa935ee8dbe

Advanced Info > Call Data > Select all data and copy to clipboard.

Expand All @@ -241,6 +241,8 @@ In nano, to paste the clipboard to the file use CTRL+P, save content using CTRL+

### Download through L1 endpoint call

Alternatively, to the previous step, you could download the bytecode through L1 endpoint call

```bash
cd ~/contract
L1_ENDPOINT=<YOUR_L1_ENDPOINT_HERE>
Expand All @@ -266,8 +268,8 @@ sha256sum FflonkVerifier.sol.*.bytecode
The result should be:

```
27270e1846e7e8512ab9cc311a96a1425a03adda282b18d5beb521dfe09c3d22 FflonkVerifier.sol.compiled.bytecode
27270e1846e7e8512ab9cc311a96a1425a03adda282b18d5beb521dfe09c3d22 FflonkVerifier.sol.explorer.bytecode
a830254dd0e50c7fb306d028c0fed5927027814c3151822d16f26e802615ecff FflonkVerifier.sol.compiled.bytecode
a830254dd0e50c7fb306d028c0fed5927027814c3151822d16f26e802615ecff FflonkVerifier.sol.explorer.bytecode
```

## Generated files hash
Expand All @@ -282,96 +284,96 @@ The result should be:
<tr><td colspan=2><b>buildstoragerom</b></td></tr>
<tr><td>storage_sm_rom.json</td><td>676c3f58263fc284bc53ef949dd1acedcfb090f3287ee080b2a277ed2157894a</td></tr>
<tr><td colspan=2><b>buildconstants</b></td></tr>
<tr><td>zkevm.const</td><td>ca00d4c994f4793c14b19a9a26f17f170165b9177ada598f94a416604a6ec0b8</td></tr>
<tr><td>zkevm.const</td><td>ca154acee3bf9b31bc5a66d919af95536397cb49c5785c8c77cc4e814097a1d7</td></tr>
<tr><td colspan=2><b>buildstarkinfo</b></td></tr>
<tr><td>zkevm.starkstruct.json</td><td>284b6ce275c637af4a0b4b10cd83a881c6f1b21e21ad7ea2276379ed8393b099</td></tr>
<tr><td>zkevm.starkinfo.json</td><td>cd4615be096817d14b3b19780897ad39f5cd26f83e5d17518dae7688563fcb54</td></tr>
<tr><td colspan=2><b>buildconstanttree</b></td></tr>
<tr><td>zkevm.verkey.json</td><td>466b663f730c032b235e7c9ac57d4492bdeea51af8b62bc204ef20700de88c6d</td></tr>
<tr><td>zkevm.consttree</td><td>ca00d4c994f4793c14b19a9a26f17f170165b9177ada598f94a416604a6ec0b8</td></tr>
<tr><td>zkevm.verkey.json</td><td>5092fbb5581804e283ee328723f106ba3076c0df26feb1937759731e23870475</td></tr>
<tr><td>zkevm.consttree</td><td>ca154acee3bf9b31bc5a66d919af95536397cb49c5785c8c77cc4e814097a1d7</td></tr>
<tr><td colspan=2><b>gencircom</b></td></tr>
<tr><td>zkevm.verifier.circom</td><td>4a9abd5c5d31f3675cac455fb4e8e06a1f524d86e4e6e18f32f0090f017c9f6d</td></tr>
<tr><td>zkevm.verifier.circom</td><td>8475ff87bc8ad6361123045d034a481a2c57935fb4a8990957458f4ace6109a2</td></tr>
<tr><td colspan=2><b>compilecircom</b></td></tr>
<tr><td>zkevm.verifier.r1cs</td><td>3ed36eec0462885d480e6e3023f91e0265aad8c5556aa33d6c7b34e866e59605</td></tr>
<tr><td>zkevm.verifier.sym</td><td>57803c3774b227440b0cae55bace553a198ec675d8bdae72b37bbc2a59b7d9c9</td></tr>
<tr><td>zkevm.verifier.r1cs</td><td>653122109db0086d44b339f7ddadfc64aabe851c9c29af9fc4d4e2dc8bb00b61</td></tr>
<tr><td>zkevm.verifier.sym</td><td>a84d5a34944a745428c4ed8708b7c654169a2ffd00e1eccd7044a25bd2194edf</td></tr>
<tr><td colspan=2><b>c12a_setup</b></td></tr>
<tr><td>c12a.pil</td><td>13b74f6e33dcbfcb9aa1a5eb7a93691635f51f33aa91e7c867dec11509c93f4d</td></tr>
<tr><td>c12a.const</td><td>96b15b147af5ffcf08f2692d6bcbc149ca46521f80a2d5476da017c78c673cb7</td></tr>
<tr><td>c12a.const</td><td>eda18ab4398133691e0daecd1525d51435e8907dc0cde5777ec96def34b2781f</td></tr>
<tr><td>c12a.exec</td><td>6fe8e529645f1b72de3851ecd50dde6b830846c4cd3af0b83267151b11ec45e1</td></tr>
<tr><td colspan=2><b>c12a_buildstarkinfo</b></td></tr>
<tr><td>c12a.starkstruct.json</td><td>c8ceea75f0aa05fdbdb20ac41b224355fde07a0dbeecd6649ff8c2636b9a759c</td></tr>
<tr><td>c12a.starkinfo.json</td><td>c05b27f4538e8071a0e8045faeb8a6de8771053587ad657b07c9401b9597a663</td></tr>
<tr><td colspan=2><b>c12a_buildconstanttree</b></td></tr>
<tr><td>c12a.verkey.json</td><td>20f9ed1d602fe5155c0c93f342fda579987cd85b9011fd8658a427ffd09e7468</td></tr>
<tr><td>c12a.consttree</td><td>96b15b147af5ffcf08f2692d6bcbc149ca46521f80a2d5476da017c78c673cb7</td></tr>
<tr><td>c12a.verkey.json</td><td>c11451e126f7a5f1602a5b6721aee1cef819a2760db2aec20711235404fbcbcc</td></tr>
<tr><td>c12a.consttree</td><td>eda18ab4398133691e0daecd1525d51435e8907dc0cde5777ec96def34b2781f</td></tr>
<tr><td colspan=2><b>c12a_gencircom</b></td></tr>
<tr><td>c12a.verifier.circom</td><td>63c0537db15875dd0e61696c5b97344424f1a1dffaa201ae04bded78feb5bb0e</td></tr>
<tr><td>c12a.verifier.circom</td><td>ff7afa36dd7dcbe6bf882309397294b1ca092890231591bd9d9439cbc60b178e</td></tr>
<tr><td colspan=2><b>recursive1_gencircom</b></td></tr>
<tr><td>recursive1.circom</td><td>83543e99e0a1f660761fa8a06310dfd9b69d0c0a358a73b6baec55d9587234e5</td></tr>
<tr><td colspan=2><b>recursive1_compile</b></td></tr>
<tr><td>recursive1.r1cs</td><td>9ef158594515431ac644c0b79cc9b3ca441754ea98529e1ae2db176ccced110a</td></tr>
<tr><td>recursive1.sym</td><td>f2db344f3289e513fc8a9cacc68b697a39a410fae834bdc8feabee7b394cabc0</td></tr>
<tr><td>recursive1.r1cs</td><td>f44f949f14ca5fa15bcf916d68b5ba3933c869a816bf3d646adebec42a3f3b97</td></tr>
<tr><td>recursive1.sym</td><td>646bc2e3ca5da30c1221039c1e37af2ed46a2f8f7023d65a41cb80c7de5882a9</td></tr>
<tr><td colspan=2><b>recursive1_setup</b></td></tr>
<tr><td>recursive1.pil</td><td>94ea2856942dd0745e2d6443c6988a4fdc65ac2c3173633e897e02b6d7eaad8b</td></tr>
<tr><td>recursive1.const</td><td>f81f9d99dc7be4ec8ce515a0d58958e10d09aaefabd778164fc4f076bbf273d0</td></tr>
<tr><td>recursive1.const</td><td>5365a7fd04c220a042364dadea615876512b016dfb305a1a04cd3e5c85b87a65</td></tr>
<tr><td>recursive1.exec</td><td>359e6e221cefd35827960ff5cf9cd506ba5e2a5ec92c33312a5903ce087aa155</td></tr>
<tr><td colspan=2><b>recursive1_buildstarkinfo</b></td></tr>
<tr><td>recursive.starkstruct.json</td><td>8bc8b44a7e493e447af7c04d1a362c2198f3e9b29e425248b7646c36b67fd02c</td></tr>
<tr><td>recursive1.starkinfo.json</td><td>ab63b4008c2b2e769519ff3df4ba6130d66b8d6778c0ba0fb7724d5a4a9e2841</td></tr>
<tr><td colspan=2><b>recursive1_buildconstanttree</b></td></tr>
<tr><td>recursive1.verkey.json</td><td>883d526a0a9027641307a56f3cf94bbd3072d98413273f424c5026951277aec6</td></tr>
<tr><td>recursive1.consttree</td><td>f81f9d99dc7be4ec8ce515a0d58958e10d09aaefabd778164fc4f076bbf273d0</td></tr>
<tr><td>recursive1.verkey.json</td><td>2a89c0b3c99b53adc9ced07fbe1c548c4bb78148d0fef03b150f6babc5e7024c</td></tr>
<tr><td>recursive1.consttree</td><td>5365a7fd04c220a042364dadea615876512b016dfb305a1a04cd3e5c85b87a65</td></tr>
<tr><td colspan=2><b>recursive1_verifier_gencircom</b></td></tr>
<tr><td>recursive1.verifier.circom</td><td>835cf0a8c4706ced7395957a8bef1e00b70d1007586c9fccf107f12b4936dea5</td></tr>
<tr><td colspan=2><b>recursive2_gencircom</b></td></tr>
<tr><td>recursive2.circom</td><td>c936419331d9d07aacdc912002d30bce42baa2c05a956b51d12580c82276803a</td></tr>
<tr><td>recursive2.circom</td><td>41faac208dc92e088fe3277e2c19449db9ebb591de79213168f2ee4e26497bd8</td></tr>
<tr><td colspan=2><b>recursive2_compile</b></td></tr>
<tr><td>recursive2.r1cs</td><td>b2c0f5fb9ccda0474e246cdeca3e34fc5907cd5b34f15f2192b163fb53062376</td></tr>
<tr><td>recursive2.r1cs</td><td>47c79fa4c0a239c7d5066bc16c32aa5490fec00b0c4890b7f6318aca12713b47</td></tr>
<tr><td>recursive2.sym</td><td>a47d475bcb09309b2100bfc19ce4c4baa9cee2699373290569617d71fcf51a64</td></tr>
<tr><td colspan=2><b>recursive2_setup</b></td></tr>
<tr><td>recursive2.pil</td><td>94ea2856942dd0745e2d6443c6988a4fdc65ac2c3173633e897e02b6d7eaad8b</td></tr>
<tr><td>recursive2.const</td><td>381fcf6ad4237bdbf878473f854053849a7decfbaab6c846624c41d3000ef5b8</td></tr>
<tr><td>recursive2.const</td><td>a41baa8a704ee3b2671527cc40b577f8379d5aa3e4b0ef15639af94a8a5fc424</td></tr>
<tr><td>recursive2.exec</td><td>f32201da15042d9167dc8dd6707c2920d7d2e772d411566739ac874bdbf269fb</td></tr>
<tr><td colspan=2><b>recursive2_buildstarkinfo</b></td></tr>
<tr><td>recursive2.starkinfo.json</td><td>ab63b4008c2b2e769519ff3df4ba6130d66b8d6778c0ba0fb7724d5a4a9e2841</td></tr>
<tr><td colspan=2><b>recursive2_buildconstanttree</b></td></tr>
<tr><td>recursive2.verkey.json</td><td>a2477ca847f493163113860a42ecede027bc67b4935e5ab30f2e825009363a47</td></tr>
<tr><td>recursive2.consttree</td><td>381fcf6ad4237bdbf878473f854053849a7decfbaab6c846624c41d3000ef5b8</td></tr>
<tr><td>recursive2.verkey.json</td><td>efba78426040b2b2b11fa96bf6aa27068d47abe0b38a8239454a62e707efdf69</td></tr>
<tr><td>recursive2.consttree</td><td>a41baa8a704ee3b2671527cc40b577f8379d5aa3e4b0ef15639af94a8a5fc424</td></tr>
<tr><td colspan=2><b>recursive2_verifier_gencircom</b></td></tr>
<tr><td>recursive2.verifier.circom</td><td>835cf0a8c4706ced7395957a8bef1e00b70d1007586c9fccf107f12b4936dea5</td></tr>
<tr><td colspan=2><b>recursivef_gencircom</b></td></tr>
<tr><td>recursivef.circom</td><td>68ba6079a221f4cfe3afd071e8df62c38309f34d0633f5574cf76750d8fe2066</td></tr>
<tr><td>recursivef.circom</td><td>3f1ce1916c04a44dea912c7ea3f9597d7d75c0a3f301efe6ca54ba7ef41f115f</td></tr>
<tr><td colspan=2><b>recursivef_compile</b></td></tr>
<tr><td>recursivef.r1cs</td><td>f45f7a9caa97913263f81ba31630dd615403f9fe3d72478a270b65b1be8a468e</td></tr>
<tr><td>recursivef.r1cs</td><td>e05cb8080a6b439701f06ea11884ef3bfdefebd74bb714434315adf5ee1514f6</td></tr>
<tr><td>recursivef.sym</td><td>fcbe9cd852065f1224a82f8b595d2c7aaa9fdbc616ef9048714105d69d988cd7</td></tr>
<tr><td colspan=2><b>recursivef_setup</b></td></tr>
<tr><td>recursivef.pil</td><td>62527bfc12f535e8fa3a6dd7055bc595b27fc491f7203987108ee3d13283dbfe</td></tr>
<tr><td>recursivef.const</td><td>a74d6e18aab5a524c0e1ea87001cdd88cb20fcf8a957e831d28b58b116cb358d</td></tr>
<tr><td>recursivef.const</td><td>fe0ca03b16fb7d284f6b03b88f0e99a666f5006db69b8e51ea723d07bb9b554b</td></tr>
<tr><td>recursivef.exec</td><td>1751c8a070d68cc64aa7d932a1785330da24139e547805e583f5407c5600715e</td></tr>
<tr><td colspan=2><b>recursivef_buildstarkinfo</b></td></tr>
<tr><td>recursivef.starkstruct.json</td><td>ba99ad986178db98b1a867bb9d8592fa6ba5c29d9233fd939d01424425ce6cba</td></tr>
<tr><td>recursivef.starkinfo.json</td><td>8d6e9503550ad8bdde303af5b37ad0320171d4f180fc11323b58fbf8d82bb1a6</td></tr>
<tr><td colspan=2><b>recursivef_buildconstanttree</b></td></tr>
<tr><td>recursivef.verkey.json</td><td>f41c6973c1a71970af291da4177f11f1b7accda7654c63169c607efeef5981e6</td></tr>
<tr><td>recursivef.consttree</td><td>a74d6e18aab5a524c0e1ea87001cdd88cb20fcf8a957e831d28b58b116cb358d</td></tr>
<tr><td>recursivef.verkey.json</td><td>e391e7f55efac7d781bf03a2666e4cf3c5336e548a1acfa89fa295a1d9b408fe</td></tr>
<tr><td>recursivef.consttree</td><td>fe0ca03b16fb7d284f6b03b88f0e99a666f5006db69b8e51ea723d07bb9b554b</td></tr>
<tr><td colspan=2><b>recursivef_verifier_gencircom</b></td></tr>
<tr><td>recursivef.verifier.circom</td><td>3607ed5c1ec397aaa35a09122128d57896b0b9ae648a273721f23c82f69eca30</td></tr>
<tr><td>recursivef.verifier.circom</td><td>64dd7df291518a73d0c71a1ca329e1f05bf3f25a97f2b9b905a8cdd495cb9ed6</td></tr>
<tr><td colspan=2><b>final_gencircom</b></td></tr>
<tr><td>final.circom</td><td>74a06304ce73b282a520c358baead152dad790b0aa6b7031f6ba8c00166be459</td></tr>
<tr><td colspan=2><b>final_compile</b></td></tr>
<tr><td>final.r1cs</td><td>8980408e97bd37a12dcb3cca90309421a25b17d899a9021a7eb55d86c46b4eb5</td></tr>
<tr><td>final.sym</td><td>9c20071021039f3f82b3ecb471402949cbbc290812da97f47aae4b13ad73342d</td></tr>
<tr><td>final.r1cs</td><td>014d04d4dc123f9f0e625ac6819b41a5ed2baf83d712d00bad326b5763d0b77a</td></tr>
<tr><td>final.sym</td><td>e9cae6fc94d002475857b90b4cea238e60c4ea4492e435ebb9aa91e5e055775b</td></tr>
<tr><td colspan=2><b>fflonk_setup</b></td></tr>
<tr><td>final.fflonk.zkey</td><td>95f221bb359705463b02c43e7c7fc3928676dfc4e2a788504d2009a598f144ee</td></tr>
<tr><td>final.fflonk.zkey</td><td>fdc2c9e25735144653663f29806e711e811b4c7135785d01c5e10f13e3c4cbcc</td></tr>
<tr><td colspan=2><b>fflonk_evk</b></td></tr>
<tr><td>final.fflonk.verkey.json</td><td>65fe92de992fa6a8e43760dd4c7629d700dd9cb4ef8c4210581b6e277fec104a</td></tr>
<tr><td>dependencies.txt</td><td>1201d73ded9420e99e434147a91f82200781bb6b6348dfca6439f315b9612672</td></tr>
<tr><td>final.fflonk.verkey.json</td><td>23f1f4593ab0bb77a7aeb5ad30c5bddbc4b29a696e2e4b961500d9260e4d04b5</td></tr>
<tr><td>dependencies.txt</td><td>d2ecb931d898a37e596b2b4716ca22f875fae3de913d03bf0106ef2ea10eecd8</td></tr>
<tr><td colspan=2><b>fflonk_solidity</b></td></tr>
<tr><td>final.fflonk.verifier.sol</td><td>9bf2d96c589a64ba8ebde36f280993d1dc0ac3ca3cac1d09b5550055b8a523e8</td></tr>
<tr><td>final.fflonk.verifier.sol</td><td>ad7faf985475359b115d73ba216e7f6feb9cb3181889e65f62e23904da40b33a</td></tr>
</table>


<div class="meta_for_parser tablespecs" style="visibility:hidden">
sed "s/^0x//;s/\([0-9a-f]\{40\}\)/\1\n/g" ~/contract/FflonkVerifier.sol.compiled.bytecode | head
sed "s/^0x//;s/\([0-9a-f]\{40\}\)/\1\n/g" ~/contract/FflonkVerifier.sol.compiled.bytecode | tail
sed "s/^0x//;s/\([0-9a-f]\{40\}\)/\1\n/g" FflonkVerifier.sol.compiled.bytecode | head
sed "s/^0x//;s/\([0-9a-f]\{40\}\)/\1\n/g" FflonkVerifier.sol.compiled.bytecode | tail
</div>
Loading