[SON ETH] Confirm Safe Contracts features - primary wallet updates #359

Closed
opened 2022-05-04 16:02:18 +00:00 by serkixenos · 12 comments
serkixenos commented 2022-05-04 16:02:18 +00:00 (Migrated from gitlab.com)

We need demo that Safe Contract is actually fulfilling the requirements for SON primary wallet.

The output of this task should be a script or code that can change the list of accounts controlling primary wallet.

  • Initial state is that contract is deployed using random account (in QA environment case, that's default chain account (first account in genesis file).
  • Ethereum node provides 16 accounts with its private keys.
  • First, using contract deployment account, script should update the list of accounts controlling primary wallet, eg to first 7 accounts from genesis file.
  • Multisig threshold is N * 2 / 3 + 1. With 7 SONs, we need at least 5 signatures to make any transactions on a contract.
  • Second, script should use new wallet controller accounts, to update (again) list of accounts controlling primary wallet, eg to second 7 accounts from genesis file.
  • If possible, script should remove the possibility that account used for contract deployment updates the list of accounts controlling primary wallet.
We need demo that Safe Contract is actually fulfilling the requirements for SON primary wallet. The output of this task should be a script or code that can change the list of accounts controlling primary wallet. - Initial state is that contract is deployed using random account (in QA environment case, that's default chain account (first account in genesis file). - Ethereum node provides 16 accounts with its private keys. - First, using contract deployment account, script should update the list of accounts controlling primary wallet, eg to first 7 accounts from genesis file. - Multisig threshold is N * 2 / 3 + 1. With 7 SONs, we need at least 5 signatures to make any transactions on a contract. - Second, script should use new wallet controller accounts, to update (again) list of accounts controlling primary wallet, eg to second 7 accounts from genesis file. - If possible, script should remove the possibility that account used for contract deployment updates the list of accounts controlling primary wallet.
serkixenos commented 2022-05-04 16:02:18 +00:00 (Migrated from gitlab.com)

assigned to @pavel.baykov

assigned to @pavel.baykov
pavel.baykov commented 2022-05-11 15:11:07 +00:00 (Migrated from gitlab.com)

to begin interact with deployed contracts need to invoke setup method of GnosisSafeProxyFactory contract, it's by default will be deployed to: 0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2

below sample command is adding owner:
0xb536C52D66ac68964b8Bc5418ecA1Df412b46Eb4
with private key
0xb9f3adb8feb7835db6fa7d6c99adbbdcea7ebc5a90ff17cb726f0693396075ac

curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x61a9571DC53732C22C7377a8f40Ba86920F2A76a", "to": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "data": "0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee70955200000000000000000000000000000000000000000000000000000000000000606b55503d2ced2c6ee4b392872384c359e449b2a0670f4b6ba9c9e96d99f513d80000000000000000000000000000000000000000000000000000000000000184b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b536c52d66ac68964b8bc5418eca1df412b46eb40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}], "id": 8}' localhost:8545
to begin interact with deployed contracts need to invoke setup method of GnosisSafeProxyFactory contract, it's by default will be deployed to: 0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2 below sample command is adding owner: 0xb536C52D66ac68964b8Bc5418ecA1Df412b46Eb4 with private key 0xb9f3adb8feb7835db6fa7d6c99adbbdcea7ebc5a90ff17cb726f0693396075ac ``` curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0x61a9571DC53732C22C7377a8f40Ba86920F2A76a", "to": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "data": "0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee70955200000000000000000000000000000000000000000000000000000000000000606b55503d2ced2c6ee4b392872384c359e449b2a0670f4b6ba9c9e96d99f513d80000000000000000000000000000000000000000000000000000000000000184b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000b536c52d66ac68964b8bc5418eca1df412b46eb40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}], "id": 8}' localhost:8545 ```
serkixenos commented 2022-05-11 15:35:22 +00:00 (Migrated from gitlab.com)

What method of the smart contract is executed by this call?

Once we know the method, we can decode "data" part of the curl call.

What method of the smart contract is executed by this call? Once we know the method, we can decode "data" part of the curl call.
pavel.baykov commented 2022-05-13 11:55:03 +00:00 (Migrated from gitlab.com)

function createProxy(address singleton, bytes memory data) public returns (GnosisSafeProxy proxy)

function createProxy(address singleton, bytes memory data) public returns (GnosisSafeProxy proxy)
pavel.baykov commented 2022-05-13 11:57:27 +00:00 (Migrated from gitlab.com)

Create account

curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeE52b70e8D7AB5Fe661311D47e81228EAD6B06B9", "to": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "data": "0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee7095520000000000000000000000000000000000000000000000000000000000000060389e842135296f73dfa7229d778da3d8e9ed8705ebd982f0b8be41d231abb4b40000000000000000000000000000000000000000000000000000000000000184b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000eE52b70e8D7AB5Fe661311D47e81228EAD6B06B90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}], "id": 19}' localhost:8545 -v

Output contains transaction receipt:
{"jsonrpc":"2.0","id":19,"result":"0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0"}

curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0"],"id":1}' localhost:8545

Output

{
  blockHash: "0x5b771fd0dcb00a37e913d9d6617884d4702d921be517b82272df533cad49a8a9",
  blockNumber: 10668657,
  contractAddress: null,
  cumulativeGasUsed: 6991863,
  effectiveGasPrice: 1025603033,
  from: "0xee52b70e8d7ab5fe661311d47e81228ead6b06b9",
  gasUsed: 259064,
  logs: [{
      address: "0x9608273c0c227502bbeaf238842cd17e5eb8f44f",
      blockHash: "0x5b771fd0dcb00a37e913d9d6617884d4702d921be517b82272df533cad49a8a9",
      blockNumber: 10668657,
      data: "0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ee52b70e8d7ab5fe661311d47e81228ead6b06b9",
      logIndex: 48,
      removed: false,
      topics: ["0x141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a8", "0x000000000000000000000000a6b71e26c5e0845f74c812102ca7114b6a896ab2"],
      transactionHash: "0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0",
      transactionIndex: 24
  }, {
      address: "0xa6b71e26c5e0845f74c812102ca7114b6a896ab2",
      blockHash: "0x5b771fd0dcb00a37e913d9d6617884d4702d921be517b82272df533cad49a8a9",
      blockNumber: 10668657,
      data: "0x0000000000000000000000009608273c0c227502bbeaf238842cd17e5eb8f44f000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee709552",
      logIndex: 49,
      removed: false,
      topics: ["0x4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235"],
      transactionHash: "0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0",
      transactionIndex: 24
  }],
  logsBloom: "0x00000000000000000000000000000400000000400000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000000008000000200000000000000000000000000500000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000001000000000000000000000000000000000000000080000000000000000400000000020000000000000100000000000000000",
  status: "0x1",
  to: "0xa6b71e26c5e0845f74c812102ca7114b6a896ab2",
  transactionHash: "0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0",
  transactionIndex: 24,
  type: "0x2"
}

have new created Safe-account: 0x9608273c0c227502bbeaf238842cd17e5eb8f44f

Create account ``` curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeE52b70e8D7AB5Fe661311D47e81228EAD6B06B9", "to": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "data": "0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee7095520000000000000000000000000000000000000000000000000000000000000060389e842135296f73dfa7229d778da3d8e9ed8705ebd982f0b8be41d231abb4b40000000000000000000000000000000000000000000000000000000000000184b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000eE52b70e8D7AB5Fe661311D47e81228EAD6B06B90000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}], "id": 19}' localhost:8545 -v ``` Output contains transaction receipt: {"jsonrpc":"2.0","id":19,"result":"0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0"} ``` curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params":["0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0"],"id":1}' localhost:8545 ``` Output ``` { blockHash: "0x5b771fd0dcb00a37e913d9d6617884d4702d921be517b82272df533cad49a8a9", blockNumber: 10668657, contractAddress: null, cumulativeGasUsed: 6991863, effectiveGasPrice: 1025603033, from: "0xee52b70e8d7ab5fe661311d47e81228ead6b06b9", gasUsed: 259064, logs: [{ address: "0x9608273c0c227502bbeaf238842cd17e5eb8f44f", blockHash: "0x5b771fd0dcb00a37e913d9d6617884d4702d921be517b82272df533cad49a8a9", blockNumber: 10668657, data: "0x000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ee52b70e8d7ab5fe661311d47e81228ead6b06b9", logIndex: 48, removed: false, topics: ["0x141df868a6331af528e38c83b7aa03edc19be66e37ae67f9285bf4f8e3c6a1a8", "0x000000000000000000000000a6b71e26c5e0845f74c812102ca7114b6a896ab2"], transactionHash: "0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0", transactionIndex: 24 }, { address: "0xa6b71e26c5e0845f74c812102ca7114b6a896ab2", blockHash: "0x5b771fd0dcb00a37e913d9d6617884d4702d921be517b82272df533cad49a8a9", blockNumber: 10668657, data: "0x0000000000000000000000009608273c0c227502bbeaf238842cd17e5eb8f44f000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee709552", logIndex: 49, removed: false, topics: ["0x4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e235"], transactionHash: "0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0", transactionIndex: 24 }], logsBloom: "0x00000000000000000000000000000400000000400000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000010000000000000000000000000000000000000000008000000200000000000000000000000000500000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000001000000000000000000000000000000000000000080000000000000000400000000020000000000000100000000000000000", status: "0x1", to: "0xa6b71e26c5e0845f74c812102ca7114b6a896ab2", transactionHash: "0xbc262e1222ff48cd026a62fd925912ab5006650e311b7711a7216054461a64e0", transactionIndex: 24, type: "0x2" } ``` have new created Safe-account: 0x9608273c0c227502bbeaf238842cd17e5eb8f44f
pavel.baykov commented 2022-05-13 11:58:06 +00:00 (Migrated from gitlab.com)

Add one more account data:
0x0d582f13000000000000000000000000a4bcb9c203eb5cf8bc0b824db88cf7947ce9c79f0000000000000000000000000000000000000000000000000000000000000001

Add one more account data: 0x0d582f13000000000000000000000000a4bcb9c203eb5cf8bc0b824db88cf7947ce9c79f0000000000000000000000000000000000000000000000000000000000000001
pavel.baykov commented 2022-05-13 11:58:32 +00:00 (Migrated from gitlab.com)

Remove account:
0xf8dc5dd90000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a4bcb9c203eb5cf8bc0b824db88cf7947ce9c79f0000000000000000000000000000000000000000000000000000000000000001

Remove account: 0xf8dc5dd90000000000000000000000000000000000000000000000000000000000000001000000000000000000000000a4bcb9c203eb5cf8bc0b824db88cf7947ce9c79f0000000000000000000000000000000000000000000000000000000000000001
pavel.baykov commented 2022-05-13 12:01:21 +00:00 (Migrated from gitlab.com)

communication of safe-cli (reference app) with safe-contracts is more complicated than just single HTTP invocation, it’s multiple of HTTP commands.
For instance to setup safe account it’s required 14 commands, most of them just check if values are correct and there is enough gas geth1.pcap

communication of safe-cli (reference app) with safe-contracts is more complicated than just single HTTP invocation, it’s multiple of HTTP commands. For instance to setup safe account it’s required 14 commands, most of them just check if values are correct and there is enough gas [geth1.pcap](/uploads/5c6ba69c78d62c2744e4f56f3d197207/geth1.pcap)
pavel.baykov commented 2022-05-13 12:09:24 +00:00 (Migrated from gitlab.com)

sample how to create safe account with 8 owners and minimum 5 required signatures

curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeE52b70e8D7AB5Fe661311D47e81228EAD6B06B9", "to": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "data": "0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee70955200000000000000000000000000000000000000000000000000000000000000604fa262bd05cdef2e3d5261787ee66d9447a4036324990e04380339bec83b4c7a0000000000000000000000000000000000000000000000000000000000000264b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000220000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000005FbBb31BE52608D2F52247E8400B7fCaA9E0bC1200000000000000000000000076ce31BD03f601c3fC13732deF921c5Bac28267600000000000000000000000009EE460834498a4ee361beB819470061B7381B490000000000000000000000006AEFbd09209e1eE2e0a589d31e732F69B77713D2000000000000000000000000631e128b16f9aDCF1bB6385112B1519C917D77a7000000000000000000000000cD5C788e84220E8b8934Ea4F1dC6a12009bCc91D0000000000000000000000003627C1B31525887CB9441130C831e3588765030500000000000000000000000003A13a989AF30C92AD7ABD1E6210308A6c96f3730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}], "id": 8}' localhost:8545 -v

that’s will create account with owners:

0x5FbBb31BE52608D2F52247E8400B7fCaA9E0bC12
0x76ce31BD03f601c3fC13732deF921c5Bac282676
0x09EE460834498a4ee361beB819470061B7381B49
0x6AEFbd09209e1eE2e0a589d31e732F69B77713D2
0x631e128b16f9aDCF1bB6385112B1519C917D77a7
0xcD5C788e84220E8b8934Ea4F1dC6a12009bCc91D
0x3627C1B31525887CB9441130C831e35887650305
0x03A13a989AF30C92AD7ABD1E6210308A6c96f373
sample how to create safe account with 8 owners and minimum 5 required signatures ``` curl -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method": "eth_sendTransaction", "params": [{"from": "0xeE52b70e8D7AB5Fe661311D47e81228EAD6B06B9", "to": "0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2", "data": "0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee70955200000000000000000000000000000000000000000000000000000000000000604fa262bd05cdef2e3d5261787ee66d9447a4036324990e04380339bec83b4c7a0000000000000000000000000000000000000000000000000000000000000264b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000220000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000005FbBb31BE52608D2F52247E8400B7fCaA9E0bC1200000000000000000000000076ce31BD03f601c3fC13732deF921c5Bac28267600000000000000000000000009EE460834498a4ee361beB819470061B7381B490000000000000000000000006AEFbd09209e1eE2e0a589d31e732F69B77713D2000000000000000000000000631e128b16f9aDCF1bB6385112B1519C917D77a7000000000000000000000000cD5C788e84220E8b8934Ea4F1dC6a12009bCc91D0000000000000000000000003627C1B31525887CB9441130C831e3588765030500000000000000000000000003A13a989AF30C92AD7ABD1E6210308A6c96f3730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}], "id": 8}' localhost:8545 -v ``` that’s will create account with owners: ``` 0x5FbBb31BE52608D2F52247E8400B7fCaA9E0bC12 0x76ce31BD03f601c3fC13732deF921c5Bac282676 0x09EE460834498a4ee361beB819470061B7381B49 0x6AEFbd09209e1eE2e0a589d31e732F69B77713D2 0x631e128b16f9aDCF1bB6385112B1519C917D77a7 0xcD5C788e84220E8b8934Ea4F1dC6a12009bCc91D 0x3627C1B31525887CB9441130C831e35887650305 0x03A13a989AF30C92AD7ABD1E6210308A6c96f373 ```
pavel.baykov commented 2022-05-13 15:43:45 +00:00 (Migrated from gitlab.com)

how to get list of owners, for instance for safe-account: 0xFe5f029F924DE0397528114E76450029B3728324

curl -H "Content-Type: application/json" --data '{"jsonrpc": "2.0", "method": "eth_call", "params": [{"to": "0xFe5f029F924DE0397528114E76450029B3728324", "data": "0xa0e67e2b"}, "latest"], "id": 10}' http://127.0.0.1:8545
{"jsonrpc":"2.0","id":10,"result":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000005fbbb31be52608d2f52247e8400b7fcaa9e0bc1200000000000000000000000076ce31bd03f601c3fc13732def921c5bac28267600000000000000000000000009ee460834498a4ee361beb819470061b7381b490000000000000000000000006aefbd09209e1ee2e0a589d31e732f69b77713d2000000000000000000000000631e128b16f9adcf1bb6385112b1519c917d77a7000000000000000000000000cd5c788e84220e8b8934ea4f1dc6a12009bcc91d0000000000000000000000003627c1b31525887cb9441130c831e3588765030500000000000000000000000003a13a989af30c92ad7abd1e6210308a6c96f373"}

that is match for 8 eth owners:

0x5FbBb31BE52608D2F52247E8400B7fCaA9E0bC12
0x76ce31BD03f601c3fC13732deF921c5Bac282676
0x09EE460834498a4ee361beB819470061B7381B49
0x6AEFbd09209e1eE2e0a589d31e732F69B77713D2
0x631e128b16f9aDCF1bB6385112B1519C917D77a7
0xcD5C788e84220E8b8934Ea4F1dC6a12009bCc91D
0x3627C1B31525887CB9441130C831e35887650305
0x03A13a989AF30C92AD7ABD1E6210308A6c96f373
output is 256 bits aligned 
first value is 0000000000000000000000000000000000000000000000000000000000000020
next (256 bits) is a number of owners
... (256 bit) owner address
......
... (256 bit) owner address
how to get list of owners, for instance for safe-account: 0xFe5f029F924DE0397528114E76450029B3728324 ``` curl -H "Content-Type: application/json" --data '{"jsonrpc": "2.0", "method": "eth_call", "params": [{"to": "0xFe5f029F924DE0397528114E76450029B3728324", "data": "0xa0e67e2b"}, "latest"], "id": 10}' http://127.0.0.1:8545 ``` ``` {"jsonrpc":"2.0","id":10,"result":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000080000000000000000000000005fbbb31be52608d2f52247e8400b7fcaa9e0bc1200000000000000000000000076ce31bd03f601c3fc13732def921c5bac28267600000000000000000000000009ee460834498a4ee361beb819470061b7381b490000000000000000000000006aefbd09209e1ee2e0a589d31e732f69b77713d2000000000000000000000000631e128b16f9adcf1bb6385112b1519c917d77a7000000000000000000000000cd5c788e84220e8b8934ea4f1dc6a12009bcc91d0000000000000000000000003627c1b31525887cb9441130c831e3588765030500000000000000000000000003a13a989af30c92ad7abd1e6210308a6c96f373"} ``` that is match for 8 eth owners: ``` 0x5FbBb31BE52608D2F52247E8400B7fCaA9E0bC12 0x76ce31BD03f601c3fC13732deF921c5Bac282676 0x09EE460834498a4ee361beB819470061B7381B49 0x6AEFbd09209e1eE2e0a589d31e732F69B77713D2 0x631e128b16f9aDCF1bB6385112B1519C917D77a7 0xcD5C788e84220E8b8934Ea4F1dC6a12009bCc91D 0x3627C1B31525887CB9441130C831e35887650305 0x03A13a989AF30C92AD7ABD1E6210308A6c96f373 ``` ``` output is 256 bits aligned first value is 0000000000000000000000000000000000000000000000000000000000000020 next (256 bits) is a number of owners ... (256 bit) owner address ...... ... (256 bit) owner address ```
serkixenos commented 2022-05-27 13:44:10 +00:00 (Migrated from gitlab.com)

mentioned in issue #376

mentioned in issue #376
serkixenos commented 2022-06-16 01:39:00 +00:00 (Migrated from gitlab.com)

Closing, as obsolete. Will be handled in another ticket.

Closing, as obsolete. Will be handled in another ticket.
serkixenos (Migrated from gitlab.com) closed this issue 2022-06-16 01:39:09 +00:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Peerplays_Blockchain/peerplays_migrated#359
No description provided.