Last active
January 30, 2023 22:36
-
-
Save joyqvq/5febd8deb5cacc6f47afa1253224b7da to your computer and use it in GitHub Desktop.
Test Multisig Script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
## Test Multisig Script | |
One tab: | |
``` | |
cargo run --bin sui-test-validator | |
``` | |
One tab: | |
1. Add some keys to keystore | |
``` | |
target/debug/sui client new-address secp256r1 | |
target/debug/sui client new-address ed25519 | |
target/debug/sui client new-address ed25519 | |
target/debug/sui keytool list | |
Sui Address | Public Key (Base64) | Scheme | |
---------------------------------------------------------------------------------------------------- | |
0x6e1ab690e153b56e615b52f1d63ad1b1e648652e | AgJTS++o+mJKX63fZ3UCNfijUFitIRm6clhno8rnp+XEJw== | secp256r1 | |
0xb59ce11ef3ad15b6c247dda9890dce1b781f99df | AGVvsLi5Q5mXUQf0ljzUn0iA3nLogSzLO3JMkPiuragt | ed25519 | |
0xfdf3a56d8ac390499c611fd338036e3139a0e9a5 | AO6fjfh1RYv+NZq/BbtPhx9ZaSlD34nCzjFYGyWrhf1s | ed25519 | |
``` | |
2. Create a multisig address with 3 pks: | |
``` | |
target/debug/sui keytool multi-sig-address --pks AgP6wdhblYJR3iQ8NJkIj2RxkUlKh5fLuzkEVAVLEaV+DQ== AQIO0r/XoOqhMf67kfG5Pl9sgvtl6F20c3s6YuyvtJnBHw== AAVfOhvhexjXkEf89dVN+H7lD83i1iyG9DsB3pBcPSLq --weights 1 2 3 --threshold 3 | |
Multisig address: 0x959d27a75fced941de22caf8deb7b7499df3992b | |
Participating parties: | |
Sui Address | Public Key (Base64) | Weight | |
---------------------------------------------------------------------------------------------------- | |
0x487998f81ffe67b97f6ff84e61f638291dd019e3 | AgP6wdhblYJR3iQ8NJkIj2RxkUlKh5fLuzkEVAVLEaV+DQ== | 1 | |
0xa5f022cce499749a54ba59bf377cdaea369e7457 | AQIO0r/XoOqhMf67kfG5Pl9sgvtl6F20c3s6YuyvtJnBHw== | 2 | |
0xaeb4c19379dee3edff0c2f67c9da4b346f41c6bd | AAVfOhvhexjXkEf89dVN+H7lD83i1iyG9DsB3pBcPSLq | 3 | |
``` | |
3. Send to this multisig address some gas | |
``` | |
curl --location --request POST 'http://127.0.0.1:9123/gas' --header 'Content-Type: application/json' --data-raw "{ \"FixedAmountRequest\": { \"recipient\": \"0x959d27a75fced941de22caf8deb7b7499df3992b\" } }" | |
{"transferred_gas_objects":[{"amount":200000,"id":"0x38a8a91a84b108a4499fe5c0226a9e01d466e603","transfer_tx_digest":"9F4uVa95FjLfRc9i1QeA1t5NBsNX7caGdiuiiVVXxkjj"},{"amount":200000,"id":"0x42bf1424f5f2fac68d7b72c62a14a11349ea865a","transfer_tx_digest":"9F4uVa95FjLfRc9i1QeA1t5NBsNX7caGdiuiiVVXxkjj"},{"amount":200000,"id":"0x778c678d7cf237c1f82f72f033eb00a1c5c55836","transfer_tx_digest":"9F4uVa95FjLfRc9i1QeA1t5NBsNX7caGdiuiiVVXxkjj"},{"amount":200000,"id":"0xb746f9a98066c4115ceda4e857a46337d15aa9bb","transfer_tx_digest":"9F4uVa95FjLfRc9i1QeA1t5NBsNX7caGdiuiiVVXxkjj"},{"amount":200000,"id":"0xe2b9fbb09daa8baa2bcd191baaf5943351126647","transfer_tx_digest":"9F4uVa95FjLfRc9i1QeA1t5NBsNX7caGdiuiiVVXxkjj"}],"error":null}% | |
``` | |
4. Serialize a transaction | |
``` | |
target/debug/sui client serialize-transfer-sui --to 0x183ee5473ffecfc959d0c547a6198b94e3c2c971 --sui-coin-object-id 0xe2b9fbb09daa8baa2bcd191baaf5943351126647 --gas-budget 1000 | |
Intent message to sign: AAAAAAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA | |
Raw transaction to execute: AAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA | |
``` | |
5. Sign the intent message with two keys in keystore | |
``` | |
target/debug/sui keytool sign --address 0x487998f81ffe67b97f6ff84e61f638291dd019e3 --data AAAAAAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA | |
Intent message to sign: AAAAAAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA | |
Signer address: 0x487998f81ffe67b97f6ff84e61f638291dd019e3 | |
Serialized signature (`flag || sig || pk` in Base64): "AtHVVgdkiEJHlZed3AuzTzmkyMhfU3g/h6PUXxOMtQC/Uus0vst37NKfe8yTZy0wDlvO8gIRXhDpPA+Ftpa9+z4D+sHYW5WCUd4kPDSZCI9kcZFJSoeXy7s5BFQFSxGlfg0=" | |
target/debug/sui keytool sign --address 0xa5f022cce499749a54ba59bf377cdaea369e7457 --data AAAAAAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA | |
Intent message to sign: AAAAAAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA | |
Signer address: 0xa5f022cce499749a54ba59bf377cdaea369e7457 | |
Serialized signature (`flag || sig || pk` in Base64): "AYA6X2BoJUtc00uvnnrPuWJ/tLMICZuBFIUk6+ZGl5HwMK7+B/pA+GLdLUBOuo7Qut9xSNH6IrOrW3wTk6rURa0CDtK/16DqoTH+u5HxuT5fbIL7ZehdtHN7OmLsr7SZwR8=" | |
``` | |
6. Combine 2 sigs into 1 multisig | |
``` | |
target/debug/sui keytool multi-sig-combine-partial-sig --pks AgP6wdhblYJR3iQ8NJkIj2RxkUlKh5fLuzkEVAVLEaV+DQ== AQIO0r/XoOqhMf67kfG5Pl9sgvtl6F20c3s6YuyvtJnBHw== AAVfOhvhexjXkEf89dVN+H7lD83i1iyG9DsB3pBcPSLq --weights 1 2 3 --threshold 3 --sigs AtHVVgdkiEJHlZed3AuzTzmkyMhfU3g/h6PUXxOMtQC/Uus0vst37NKfe8yTZy0wDlvO8gIRXhDpPA+Ftpa9+z4D+sHYW5WCUd4kPDSZCI9kcZFJSoeXy7s5BFQFSxGlfg0= AYA6X2BoJUtc00uvnnrPuWJ/tLMICZuBFIUk6+ZGl5HwMK7+B/pA+GLdLUBOuo7Qut9xSNH6IrOrW3wTk6rURa0CDtK/16DqoTH+u5HxuT5fbIL7ZehdtHN7OmLsr7SZwR8= | |
Multisig address: 0x959d27a75fced941de22caf8deb7b7499df3992b | |
Multisig parsed: MultiSignature(MultiSignature { sigs: [Secp256r1(Secp256r1Signature { sig: ecdsa::Signature<NistP256>(D1D556076488424795979DDC0BB34F39A4C8C85F53783F87A3D45F138CB500BF52EB34BECB77ECD29F7BCC93672D300E5BCEF202115E10E93C0F85B696BDFB3E), bytes: OnceCell(Uninit) }), Secp256k1(Secp256k1Signature { sig: 3045022100803a5f6068254b5cd34baf9e7acfb9627fb4b308099b81148524ebe6469791f0022030aefe07fa40f862dd2d404eba8ed0badf7148d1fa22b3ab5b7c1393aad445ad, bytes: OnceCell(Uninit) })], bitmap: RoaringBitmap<[0, 1]>, multi_pk: MultiPublicKey { pk_map: [("AgP6wdhblYJR3iQ8NJkIj2RxkUlKh5fLuzkEVAVLEaV+DQ==", 1), ("AQIO0r/XoOqhMf67kfG5Pl9sgvtl6F20c3s6YuyvtJnBHw==", 2), ("AAVfOhvhexjXkEf89dVN+H7lD83i1iyG9DsB3pBcPSLq", 3)], threshold: 3 }, bytes: OnceCell(Uninit) }) | |
Multisig serialized: "AwIC0dVWB2SIQkeVl53cC7NPOaTIyF9TeD+Ho9RfE4y1AL9S6zS+y3fs0p97zJNnLTAOW87yAhFeEOk8D4W2lr37PgGAOl9gaCVLXNNLr556z7lif7SzCAmbgRSFJOvmRpeR8DCu/gf6QPhi3S1ATrqO0LrfcUjR+iKzq1t8E5Oq1EWtFDowAAABAAAAAAABABAAAAAAAAEAAzBBZ1A2d2RoYmxZSlIzaVE4TkprSWoyUnhrVWxLaDVmTHV6a0VWQVZMRWFWK0RRPT0BMEFRSU8wci9Yb09xaE1mNjdrZkc1UGw5c2d2dGw2RjIwYzNzNll1eXZ0Sm5CSHc9PQIsQUFWZk9odmhleGpYa0VmODlkVk4rSDdsRDgzaTFpeUc5RHNCM3BCY1BTTHEDAwA=" | |
``` | |
7. Execute the multisig | |
``` | |
target/debug/sui client execute-signed-tx --tx-bytes AAMYPuVHP/7PyVnQxUemGYuU48LJcQCVnSenX87ZQd4iyvjet7dJnfOZK+K5+7CdqouqK80ZG6r1lDNREmZHAgAAAAAAAAAgPlSMs0YYDFvIEBZpv38kLVA5fo86sAG9gtvlZoWT56cBAAAAAAAAAOgDAAAAAAAA --signature AwIC0dVWB2SIQkeVl53cC7NPOaTIyF9TeD+Ho9RfE4y1AL9S6zS+y3fs0p97zJNnLTAOW87yAhFeEOk8D4W2lr37PgGAOl9gaCVLXNNLr556z7lif7SzCAmbgRSFJOvmRpeR8DCu/gf6QPhi3S1ATrqO0LrfcUjR+iKzq1t8E5Oq1EWtFDowAAABAAAAAAABABAAAAAAAAEAAzBBZ1A2d2RoYmxZSlIzaVE4TkprSWoyUnhrVWxLaDVmTHV6a0VWQVZMRWFWK0RRPT0BMEFRSU8wci9Yb09xaE1mNjdrZkc1UGw5c2d2dGw2RjIwYzNzNll1eXZ0Sm5CSHc9PQIsQUFWZk9odmhleGpYa0VmODlkVk4rSDdsRDgzaTFpeUc5RHNCM3BCY1BTTHEDAwA= | |
----- Certificate ---- | |
Transaction Hash: AexDUXBRW5fLtuVxffuKqJqxBLvSVcTLzzPt8SSrv75F | |
Transaction Signature: MultiSignature(MultiSignature { sigs: [Secp256r1(Secp256r1Signature { sig: ecdsa::Signature<NistP256>(D1D556076488424795979DDC0BB34F39A4C8C85F53783F87A3D45F138CB500BF52EB34BECB77ECD29F7BCC93672D300E5BCEF202115E10E93C0F85B696BDFB3E), bytes: OnceCell(Uninit) }), Secp256k1(Secp256k1Signature { sig: 3045022100803a5f6068254b5cd34baf9e7acfb9627fb4b308099b81148524ebe6469791f0022030aefe07fa40f862dd2d404eba8ed0badf7148d1fa22b3ab5b7c1393aad445ad, bytes: OnceCell(Uninit) })], bitmap: RoaringBitmap<[0, 1]>, multi_pk: MultiPublicKey { pk_map: [("AgP6wdhblYJR3iQ8NJkIj2RxkUlKh5fLuzkEVAVLEaV+DQ==", 1), ("AQIO0r/XoOqhMf67kfG5Pl9sgvtl6F20c3s6YuyvtJnBHw==", 2), ("AAVfOhvhexjXkEf89dVN+H7lD83i1iyG9DsB3pBcPSLq", 3)], threshold: 3 }, bytes: OnceCell(Uninit) }) | |
Signed Authorities Bitmap: RoaringBitmap<[1, 2, 3]> | |
Transaction Kind : Transfer SUI | |
Recipient : 0x183ee5473ffecfc959d0c547a6198b94e3c2c971 | |
Amount: Full Balance | |
Sender: 0x959d27a75fced941de22caf8deb7b7499df3992b | |
Gas Payment: Object ID: 0xe2b9fbb09daa8baa2bcd191baaf5943351126647, version: 0x2, digest: 0x3e548cb346180c5bc8101669bf7f242d50397e8f3ab001bd82dbe5668593e7a7 | |
Gas Price: 1 | |
Gas Budget: 1000 | |
----- Transaction Effects ---- | |
Status : Success | |
Mutated Objects: | |
- ID: 0xe2b9fbb09daa8baa2bcd191baaf5943351126647 , Owner: Account Address ( 0x183ee5473ffecfc959d0c547a6198b94e3c2c971 ) | |
``` |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment