Skip to content

Latest commit

 

History

History
155 lines (116 loc) · 8.03 KB

README.md

File metadata and controls

155 lines (116 loc) · 8.03 KB

Overview

In this step, operators are required to sign signatures to setup the preparation for launch step in this technical architecture.

Multisig Accounts

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

Signing signatures

For your convenience, the following JSON files are prepared.

  • unsigned_tx_signature1.json
  • unsigned_tx_signature2.json
  • unsigned_tx_signature3.json

Signature 1

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.
  • MsgGrantAllowance
    • This grant is needed for the Staker Controller to grant fee allowance to the Grantee account so that it can use transaction fees from the Staker multisig account.
  • SetWithdrawAddress
    • This grant is needed for the Staker Controller to grant change of the staking rewards withdrawal address from the Staker multisig to the Grantee account.

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

Signature 2

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 the Staker 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, the Grantee is only permitted to delegate among the validators listed in the allow list.
  • MsgUndelegate
    • This grant is needed for the Grantee to undelegate on behalf of the Staker 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, the Grantee is only permitted to undelegate among the validators listed in the allow list.
  • MsgBeginRedelegate
    • This grant is needed for the Grantee to redelegate delegations from the Staker 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, the Grantee is only permitted to redelegate among the validators listed in the allow list.
  • MsgWithdrawDelegatorReward
    • This grant is needed to allow the Grantee to withdraw staking rewards from the Staker multisig account.
  • 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.
  • MsgSetWithdrawAddress
    • This message is needed to change the withdraw address for rewards associated with the Staker multisig account to the Rewards Collector multisig account to enhance accounting management.
  • MsgGrantAllowance
    • This message is needed for the Grantee to use transaction fees from the Staker multisig account.

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

Signature 3

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.

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

Submitting your signatures

In order to setup the pre-launch described in this technical architecture, we need to collect signatures from all operators.

  1. Fork this repository.

  2. Copy the OPERATOR_NAME.txt file and change the file name to your operator name.

  3. Input your signatures

  4. Create a pull request