Skip to content
This repository has been archived by the owner on Sep 11, 2023. It is now read-only.

Question no. 2

Matt Marciniak edited this page Jan 7, 2021 · 7 revisions

deposit.json or deposit_data.json is not compatible with nimbus client. Code for converting to nimbus:

# redo assigments on all 96 to convert it into nimbus deposits.json

$GO_PATH/bin/eth2-val-tools deposit-data \
--source-min=0 \
--source-max=$VALIDATOR_OFFSET \
--amount="$DEPOSIT_AMOUNT" \
--fork-version="$FORK_VERSION" \
--withdrawals-mnemonic="$WITHDRAWALS_MNEMONIC" \
--validators-mnemonic="$VALIDATORS_MNEMONIC" > /root/multinet/repo/deposits/assignments.json 2>&1

cat /root/multinet/repo/deposits/assignments.json \
| jq -s '.' \
| jq 'map({pubkey:.pubkey, signature:.signature,withdrawal_credentials:.withdrawal_credentials,amount:.value})' \
> /root/multinet/repo/deposits/deposits.json

echo "Deposits done."

Prysm is a special case, they are centric around the Ethdo wallet system. Instead of using the EIP 2335 key files directly, like all the other clients.

In the output directory, a prysm dir is placed, with the following contents:

  • keymanager_opts.json: JSON file describing accounts and their passphrases. And the "Location" part can be configured with --key-man-loc, which will point to some "wallets" directory: where the actual wallets can be found.
    • Prysm requires Account names listed in the JSON to be prefixied with the wallet name, separated by a /. Like Assigned/foobarvalidator.
    • Ethdo wallets are in the same big store, and only one directory in this store per wallet. The directory must be named as UUID, and in the directory there must be a file with the same UUID name to describe the wallet.
    • Ethdo key files in the wallet must also be named as a UUID, so that they can be parsed in the .Accounts() call
  • wallets: a directory which is an Ethdo store with a single non-deterministic wallet in it, covering all keys.
    • The wallet name is called Assigned, and the keys are Assigned/val_<pubkey here> (excluding < and >) The pubkey is hex encoded, without 0x.
    • The wallet also contains an index file and all other ethdo-specific things

Deposit JSON file (validators list)

Example deposit_data.json file content:

[
    {
        "amount": 32000000000,
        "deposit_cli_version": "1.1.0",
        "deposit_data_root": "43bf27e6ef0a988915ad844d54d79638d40dc3ff7d0b324a8358930ba468da4c",
        "deposit_message_root": "f2230f353bb8b909629a59a8492484b9552c90c6349fbaeaa28b67b416045365",
        "eth2_network_name": "l14",
        "fork_version": "00000000",
        "pubkey": "80e4d51dd577f8d21abb919c1207ef46b53075217a67b45f027574a28d0a819f7cf84abdf2df884c43b2c719b9d128bc",
        "signature": "a31af33d25ef778372f5692da2c203a2d33427c49657abf8e4fddbc9a4e9ecf0d0bfb79c0609c87bc552627857fb4b6803f4b31d4bfbea0d1167b4ccae71f5211a7b00a414bc7e6151c36bb8372d60bec9bd98964bbb6a9aac786fee80fa0132",
        "withdrawal_credentials": "002a01ac03ebc4e37b3847125f47a865d8ef74bd86307cb8b639afcf6281070c"
    }
]

Validators list array schema:

[
    {
        "amount": 32000000000,
        "pubkey": "80e4d51dd577f8d21abb919c1207ef46b53075217a67b45f027574a28d0a819f7cf84abdf2df884c43b2c719b9d128bc",
        "signature": "a31af33d25ef778372f5692da2c203a2d33427c49657abf8e4fddbc9a4e9ecf0d0bfb79c0609c87bc552627857fb4b6803f4b31d4bfbea0d1167b4ccae71f5211a7b00a414bc7e6151c36bb8372d60bec9bd98964bbb6a9aac786fee80fa0132",
        "withdrawal_credentials": "002a01ac03ebc4e37b3847125f47a865d8ef74bd86307cb8b639afcf6281070c"
    }
]

deposit.json schema example:

[ { "public_key": "0x63FaC9201494f0bd17B9892B9fae4d52fe3BD377", "deposit_data": "0x7ba20202020227075626b6579223a202230783838373065646637326239643461356334316661613333346465376162396231346531383730643837363339646437343232343331643837656137613531323932383163346365356136653733343433396430366431333163386431323537396434346437383635346262616265303232343735663064343739393731343034222ca20202020227369676e6174757265223a2022616661626539386139383263326433306131626639326662356265306161383030376332313332383538303664393763356366353335353634613832623461396164383661656162333638663761373837393936376635623465393562666662303764373535393234383136303134313564383134353261623236363163356535353939333730333532616663303265303738396163343465343636343032626330663831623865393666353736326339333234313430363831623836306266222ca20202020227769746864726177616c5f63726564656e7469616c73223a202230303562356236356632346665636564366263366134666634383035336561643431373836336430653836303364313931383162613434336138373637623066222ca2020202022616d6f756e74223a203332303030303030303030a20207d" } ]

deposit.json is a JSON file formatted as a list of hex public keys and their corresponding deposit data as hex such as [ { public_key: '0x1', deposit_data: '0x2' }, ... ] this file will be used for generating a genesis state from a list of specified validator public keys. "deposit_data" need to be formatted as hex.

Hello there!

Clone this wiki locally