In this step, operators are required to sign signatures to setup the preparation for launch step in this technical architecture.
The following multisig accounts are generated from Step 1 process.
Name | Address |
---|---|
Staker |
celestia1vxzram63f7mvseufc83fs0gnt5383lvrle3qpt |
Staker Controller |
celestia16g5l6n9kg6879z695g6qjh70qv6wzqg640z9pn |
Rewards Collector |
celestia1vr00egrck8a0dax68fgglrm3n8v4yz9wjj7cj2 |
Grantee |
celestia1fl85qh9pw4ju48zy2eqr8h0h6d8hwgpq5880wd |
Run the following script to add the generated multisig accounts:
sh generate_multisigs.sh
For your convenience, the following JSON files are prepared.
unsigned_tx_signature1.json
unsigned_tx_signature2.json
unsigned_tx_signature3.json
This transaction grants a full authorization, fee allowance, and change the withdrawal address of the Staker multisig to the Staker Controller multisig.
The unsigned_tx_signature1.json
file includes the following grants:
- MsgGrant
- This grant grants a full authorization to the
Staker Controller
multisig.
- This grant grants a full authorization to the
- MsgGrantAllowance
- This grant is needed for the
Staker Controller
to grant fee allowance to theGrantee
account so that it can use transaction fees from theStaker
multisig account.
- This grant is needed for the
- SetWithdrawAddress
- This grant is needed for the
Staker Controller
to grant change of the staking rewards withdrawal address from theStaker
multisig to theGrantee
account.
- This grant is needed for the
Now, connect your ledger to your device and sign it.
# Import your `Staker` wallet
# Change index to the one that you have used when setting the account
celestia-appd keys add op-staker --ledger --index 0
# We use the following public RPC endpoint to get account number.
# In case it is not responsive, use any alternatives in https://docs.celestia.org/nodes/mainnet
NODE="https://celestia-rpc.mesa.newmetric.xyz:443"
STAKER_ADDR="celestia1vxzram63f7mvseufc83fs0gnt5383lvrle3qpt"
# Sign the unsigned transaction
# Make sure you change the `NAME` and `OPERATOR_NAME`
celestia-appd tx sign unsigned_tx_signature1.json \
--chain-id celestia \
--from op-staker \
--multisig $STAKER_ADDR \
--ledger \
--node $NODE \
--sign-mode amino-json \
--output-document=signature1_{OPERATOR_NAME}.json
This transaction grants a limited authorization to the Grantee
account on behalf of the Staker
using the Staker Controller
.
The unsigned_tx_signature2.json
file includes the following grants and messages:
- MsgDelegate
- This grant is needed for the
Grantee
to delegate on behalf of theStaker
multisig. It is important to note that the grant is setup with an allow list of validators selected by the MilkyWay protocol. With this constraint, theGrantee
is only permitted to delegate among the validators listed in the allow list.
- This grant is needed for the
- MsgUndelegate
- This grant is needed for the
Grantee
to undelegate on behalf of theStaker
multisig. It is important to note that the grant is setup with an allow list of validators selected by the MilkyWay protocol. With this constraint, theGrantee
is only permitted to undelegate among the validators listed in the allow list.
- This grant is needed for the
- MsgBeginRedelegate
- This grant is needed for the
Grantee
to redelegate delegations from theStaker
multisig account in case validator set is changed. It is important to note that the grant is setup with an allow list of validators selected by the MilkyWay protocol. With this constraint, theGrantee
is only permitted to redelegate among the validators listed in the allow list.
- This grant is needed for the
- MsgWithdrawDelegatorReward
- This grant is needed to allow the
Grantee
to withdraw staking rewards fromthe Staker
multisig account.
- This grant is needed to allow the
- MsgTransfer
- This grant is needed for the
Grantee
to IBC transfer. It is important to note that the grant is setup with the specific source port, channel and an allow list of the MilkyWay’s staking contract address. With this constraint, the grantee is permitted to IBC transfer to the contract address.
- This grant is needed for the
- MsgSetWithdrawAddress
- This message is needed to change the withdraw address for rewards associated with the
Staker
multisig account to theRewards Collector
multisig account to enhance accounting management.
- This message is needed to change the withdraw address for rewards associated with the
- MsgGrantAllowance
- This message is needed for the
Grantee
to use transaction fees from theStaker
multisig account.
- This message is needed for the
Now, connect your ledger to your device and sign it.
# Import your `Staker Controller` wallet
# Change index to the one that you have used when setting the account
celestia-appd keys add op-staker-controller --ledger --index 1
# We use the following public RPC endpoint to get account number.
# In case it is not responsive, use any alternatives in the following link
# https://docs.celestia.org/nodes/mainnet
NODE="https://celestia-rpc.mesa.newmetric.xyz:443"
CONTROLLER_ADDR="celestia16g5l6n9kg6879z695g6qjh70qv6wzqg640z9pn"
# Sign the unsigned transaction
# Make sure you change the `NAME` and `OPERATOR_NAME`
celestia-appd tx sign unsigned_tx_signature2.json \
--chain-id celestia \
--from op-staker-controller \
--multisig $CONTROLLER_ADDR \
--ledger \
--node $NODE \
--output-document=signature2_{OPERATOR_NAME}.json
This transaction grants IBC transfer with limited authorization from the Rewards Collector
to the Grantee
account.
The unsigned_tx_signature3.json
file includes the following grants:
- MsgTransfer
- This grant is needed for the
Grantee
to IBC transfer staking rewards. It is important to note that the grant is setup with the specific source port, channel and an allow list of the MilkyWay’s staking contract address. With this constraint, the grantee is permitted to IBC transfer to the contract address.
- This grant is needed for the
Now, connect your ledger to your device and sign it.
# Import your Rewards Collector wallet
# Change index to the one that you have used when setting the account
celestia-appd keys add op-rewards-collector --ledger --index 2
# We use the following public RPC endpoint to get account number.
# In case it is not responsive, use any alternatives in the following link
# https://docs.celestia.org/nodes/mainnet
NODE="https://celestia-rpc.mesa.newmetric.xyz:443"
REWARDS_COLLECTOR_ADDR="celestia1vr00egrck8a0dax68fgglrm3n8v4yz9wjj7cj2"
# Sign the unsigned transaction
# Make sure you change the `NAME` and `OPERATOR_NAME`
celestia-appd tx sign unsigned_tx_signature3.json \
--chain-id celestia \
--from op-rewards-collector \
--multisig $REWARDS_COLLECTOR_ADDR \
--ledger \
--node $NODE \
--output-document=signature3_{OPERATOR_NAME}.json
In order to setup the pre-launch described in this technical architecture, we need to collect signatures from all operators.
-
Fork this repository.
-
Copy the
OPERATOR_NAME.txt
file and change the file name to your operator name. -
Input your signatures
-
Create a pull request