Closed pgev closed 5 years ago
mapping(bytes32 => bool) public stakeRequests
Gas Analysis keeping StakeRequests object storage
OSTComposer.acceptStakeRequest: gasUsed: 333322
{ transactionHash: '0x4946e2c2d6bfc20517a186c5abc73dbd0e69da2f7af2fd19697f6c1b3959f9d6',
transactionIndex: 0,
blockHash: '0x06d3e73ab689ab4df486004ee566af7d54e6b7eb7d549c676e96739cb66a4881',
blockNumber: 244,
from: '0x8014986b452de9f00ff9b036dcbe522f918e2fe4',
to: '0xe08feed323681336e4a78f5af2c266408b21cac4',
gasUsed: 333322,
cumulativeGasUsed: 333322,
contractAddress: null,
logs: [],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
v: '0x1b',
r: '0x4467853bbbed5fd6555d5358a8f97e265652d87da1c641b17907edc8d9dd6eee',
s: '0x0eea450c85119b44d5f8fc52d36e4b062a33fd6dac863ab8a2bdc56ac695c016',
rawLogs: [] }
OSTComposer.rejectStakeRequest() : gasUsed: 57554
{ transactionHash: '0xf30f549f1b9b19b3c1269b995ae4b35616297c030cd9442e2736be902576624e',
transactionIndex: 0,
blockHash: '0x1abbd737080e134a95959067ecb8baa0b859c4edac5446fb3d6cd2bde2ebc6c2',
blockNumber: 245,
from: '0x8014986b452de9f00ff9b036dcbe522f918e2fe4',
to: '0xe08feed323681336e4a78f5af2c266408b21cac4',
gasUsed: 57554,
cumulativeGasUsed: 57554,
contractAddress: null,
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xf30f549f1b9b19b3c1269b995ae4b35616297c030cd9442e2736be902576624e',
blockHash: '0x1abbd737080e134a95959067ecb8baa0b859c4edac5446fb3d6cd2bde2ebc6c2',
blockNumber: 245,
address: '0xE08fEed323681336e4A78f5af2C266408b21caC4',
type: 'mined',
id: 'log_84caf0c4',
event: 'StakeRejected',
args: [Object] } ],
status: true,
logsBloom: '0x00004000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000400000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000200000000000000000',
v: '0x1b',
r: '0xab728acf244365193f17d966a66d78bb9f51103f85b388ce0e13c15b7551d294',
s: '0x386235fd53ca6f5d4dc28731d131fae24689b88b4fc3328f97adfb7c291d4b13',
rawLogs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xf30f549f1b9b19b3c1269b995ae4b35616297c030cd9442e2736be902576624e',
blockHash: '0x1abbd737080e134a95959067ecb8baa0b859c4edac5446fb3d6cd2bde2ebc6c2',
blockNumber: 245,
address: '0xE08fEed323681336e4A78f5af2C266408b21caC4',
data: '0xceada5f50980102362c88c834be3816e482b8238b92a59f8f87c347ed4307334',
topics: [Array],
type: 'mined',
id: 'log_84caf0c4' } ] }
OSTComposer.requestStake() : gasUsed: 870370
{ transactionHash: '0x41dbd61ee7a87e2a8843c94854c54eeec68fe09f94eca6a3e27f07ab3b1f9d26',
transactionIndex: 0,
blockHash: '0x1ccb2fa9d5c3b0438bb7c1bb69b438eec466e6d59ccd880039c663810b609a69',
blockNumber: 240,
from: '0xda3bbd42ba0a16be50ff2963947e03d7bab26291',
to: '0x5fddc05257c1e6aaed48846eef7f46939def9edb',
gasUsed: 870370,
cumulativeGasUsed: 870370,
contractAddress: null,
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x41dbd61ee7a87e2a8843c94854c54eeec68fe09f94eca6a3e27f07ab3b1f9d26',
blockHash: '0x1ccb2fa9d5c3b0438bb7c1bb69b438eec466e6d59ccd880039c663810b609a69',
blockNumber: 240,
address: '0x5FDdC05257C1E6AaEd48846EeF7F46939DeF9eDb',
type: 'mined',
id: 'log_95259730',
event: 'StakeRequested',
args: [Object] } ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000210000000000200000',
v: '0x1c',
r: '0x52fb79db8f77a931145d274f24985ec995ab4ec5024407f2cf4687c63aa80578',
s: '0x1806db460543d71ed245469880fb243465cb5e8af88c1ebf25e16da2acce819c',
rawLogs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x41dbd61ee7a87e2a8843c94854c54eeec68fe09f94eca6a3e27f07ab3b1f9d26',
blockHash: '0x1ccb2fa9d5c3b0438bb7c1bb69b438eec466e6d59ccd880039c663810b609a69',
blockNumber: 240,
address: '0x5FDdC05257C1E6AaEd48846EeF7F46939DeF9eDb',
data: '0x0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000e98bcba71ccf41ad7f41dc58257638614b7815fe00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000e08feed323681336e4a78f5af2c266408b21cac4cf9ca29feb13f990b2b25538c5b86f2b4c37cc9c3864e64491366bbfab48d871',
topics: [Array],
type: 'mined',
id: 'log_95259730' } ] }
OSTComposer.revokeStakeRequest() : gasUsed: 56363
{ transactionHash: '0x3b36f794635b97fde97bd5f39bd4340f96006808e41ad1d2e9fc7c684a561f96',
transactionIndex: 0,
blockHash: '0xfcfd8569aa576867d459010e31b56e4e40557b9a58573863673fc9e604a7547a',
blockNumber: 242,
from: '0xda3bbd42ba0a16be50ff2963947e03d7bab26291',
to: '0x5fddc05257c1e6aaed48846eef7f46939def9edb',
gasUsed: 56363,
cumulativeGasUsed: 56363,
contractAddress: null,
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x3b36f794635b97fde97bd5f39bd4340f96006808e41ad1d2e9fc7c684a561f96',
blockHash: '0xfcfd8569aa576867d459010e31b56e4e40557b9a58573863673fc9e604a7547a',
blockNumber: 242,
address: '0x5FDdC05257C1E6AaEd48846EeF7F46939DeF9eDb',
type: 'mined',
id: 'log_ba172b40',
event: 'StakeRevoked',
args: [Object] } ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000404000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000001000000000400000000000000001000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000',
v: '0x1b',
r: '0xc4ef35f7ae591060cdd73fdeaaa82b47c27cb77afa0e99758c3ca1d388c0ecc2',
s: '0x6548aea7ec7021f828adab6c63860ab9fc679ea89a4979709afab7e1752a2d95',
rawLogs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x3b36f794635b97fde97bd5f39bd4340f96006808e41ad1d2e9fc7c684a561f96',
blockHash: '0xfcfd8569aa576867d459010e31b56e4e40557b9a58573863673fc9e604a7547a',
blockNumber: 242,
address: '0x5FDdC05257C1E6AaEd48846EeF7F46939DeF9eDb',
data: '0xceada5f50980102362c88c834be3816e482b8238b92a59f8f87c347ed4307334',
topics: [Array],
type: 'mined',
id: 'log_ba172b40' } ] }
Gas Analysis after removing StakeRequests storage
OSTComposer.acceptStakeRequest() gasUsed: 395423
acceptStakeRequest response: { transactionHash: '0xf913009f6f7d14bfb2783002ead701a669e4a9e2cab0f06b0c11224a1c478eb5',
transactionIndex: 0,
blockHash: '0x10f4e77bae811da1593ae9bf1383d932bfc04639585f5bd4846a73c1194111f7',
blockNumber: 1924,
from: '0x8014986b452de9f00ff9b036dcbe522f918e2fe4',
to: '0x1096d47182fa0dfaba41515fa9558d71db96dae4',
gasUsed: 395423,
cumulativeGasUsed: 395423,
contractAddress: null,
logs: [],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
v: '0x1c',
r: '0x1350d4c7cef1708ed0f06e27bb4822662305973dd43099cac36ae2feb64c040c',
s: '0x4cff5be36b826ae1a10f84f847e559738a48cada250792c28c13e99d4893108d',
rawLogs: [] }
OSTComposer.rejectStakeRequest() gasUsed: 57594
{ transactionHash: '0x54ec877b0dfcb4f73a5d72b7c7cf8979657c576dc2fb2678a91dbeee9c892752',
transactionIndex: 0,
blockHash: '0xfe1a983cbf0a97d4917edd2dbb6e30b7373fd1984425cc0377405e7a75518bb7',
blockNumber: 1925,
from: '0x8014986b452de9f00ff9b036dcbe522f918e2fe4',
to: '0x1096d47182fa0dfaba41515fa9558d71db96dae4',
gasUsed: 57594,
cumulativeGasUsed: 57594,
contractAddress: null,
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x54ec877b0dfcb4f73a5d72b7c7cf8979657c576dc2fb2678a91dbeee9c892752',
blockHash: '0xfe1a983cbf0a97d4917edd2dbb6e30b7373fd1984425cc0377405e7a75518bb7',
blockNumber: 1925,
address: '0x1096D47182FA0DFabA41515fa9558D71dB96daE4',
type: 'mined',
id: 'log_4876f27e',
event: 'StakeRejected',
args: [Object] } ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000080000000000000000000008000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000400000000000000001000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000200000000000000000',
v: '0x1b',
r: '0x6f88eca80052dad5567917676ca827697f9eb6515da8552994995b5ecb637cce',
s: '0x4835ed06576af6b8d1869a947c5344a77e9c07ab5d39b2454b48a3ece9124fa0',
rawLogs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x54ec877b0dfcb4f73a5d72b7c7cf8979657c576dc2fb2678a91dbeee9c892752',
blockHash: '0xfe1a983cbf0a97d4917edd2dbb6e30b7373fd1984425cc0377405e7a75518bb7',
blockNumber: 1925,
address: '0x1096D47182FA0DFabA41515fa9558D71dB96daE4',
data: '0xfba9eda511b17f833117816d68b36950fe0fe687bcd16e6bf6f56b686a06923b',
topics: [Array],
type: 'mined',
id: 'log_4876f27e' } ] }
OSTComposer.requestStake() gasUsed: 749983
{ transactionHash: '0xc367b3c18a77d85e027576a524861f1fc48cd3fc657fae5bdc9f2422c406d7fa',
transactionIndex: 0,
blockHash: '0xa4722e38cfeef1352f5d1f63d035fa45d3f1a98d7272bcb61bf367e07a972688',
blockNumber: 1920,
from: '0xda3bbd42ba0a16be50ff2963947e03d7bab26291',
to: '0x128a0f48a62e13bdb7848b7ff8c4cb988e17d66a',
gasUsed: 749983,
cumulativeGasUsed: 749983,
contractAddress: null,
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xc367b3c18a77d85e027576a524861f1fc48cd3fc657fae5bdc9f2422c406d7fa',
blockHash: '0xa4722e38cfeef1352f5d1f63d035fa45d3f1a98d7272bcb61bf367e07a972688',
blockNumber: 1920,
address: '0x128A0F48A62E13BdB7848b7Ff8C4Cb988E17D66A',
type: 'mined',
id: 'log_9b0c2994',
event: 'StakeRequested',
args: [Object] } ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000400000008000000001000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000210000000000200000',
v: '0x1c',
r: '0x463391d5c7023a542e802b6ffee3253dbbbb9da1e432fb4b0261def3f316f23e',
s: '0x5911feb160d42a68a57451ae14ab6ff5056da64336c1a657be4ace65ff22350f',
rawLogs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xc367b3c18a77d85e027576a524861f1fc48cd3fc657fae5bdc9f2422c406d7fa',
blockHash: '0xa4722e38cfeef1352f5d1f63d035fa45d3f1a98d7272bcb61bf367e07a972688',
blockNumber: 1920,
address: '0x128A0F48A62E13BdB7848b7Ff8C4Cb988E17D66A',
data: '0x0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000e98bcba71ccf41ad7f41dc58257638614b7815fe00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000001096d47182fa0dfaba41515fa9558d71db96dae40a09f1f38edd8c03ae884ae58cfc577917df54b4a6e7129c4d90d2857cb367db',
topics: [Array],
type: 'mined',
id: 'log_9b0c2994' } ] }
OSTComposer.revokeStakeRequest() gasUsed: 54079
{ transactionHash: '0xb69d71c9eb1e91ef4f244ff65a55d76dabb0227d79a082399db289058a9939f4',
transactionIndex: 0,
blockHash: '0x87fe92f4cca5c42e89e79a8de8e97d6896dc5e84b07a3d94b9844ff827b94cee',
blockNumber: 1922,
from: '0xda3bbd42ba0a16be50ff2963947e03d7bab26291',
to: '0x128a0f48a62e13bdb7848b7ff8c4cb988e17d66a',
gasUsed: 54079,
cumulativeGasUsed: 54079,
contractAddress: null,
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xb69d71c9eb1e91ef4f244ff65a55d76dabb0227d79a082399db289058a9939f4',
blockHash: '0x87fe92f4cca5c42e89e79a8de8e97d6896dc5e84b07a3d94b9844ff827b94cee',
blockNumber: 1922,
address: '0x128A0F48A62E13BdB7848b7Ff8C4Cb988E17D66A',
type: 'mined',
id: 'log_6b6ed2c2',
event: 'StakeRevoked',
args: [Object] } ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000001000000000400000008000000001000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000',
v: '0x1b',
r: '0xa3baa08dbca3473e68d8f71364c0dc903ac9df8a90b636f82cff7d45a9b721b1',
s: '0x050728568e3f23c00bd03123675f47aa5ddd762f0a4ee756746eef9dc7515350',
rawLogs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xb69d71c9eb1e91ef4f244ff65a55d76dabb0227d79a082399db289058a9939f4',
blockHash: '0x87fe92f4cca5c42e89e79a8de8e97d6896dc5e84b07a3d94b9844ff827b94cee',
blockNumber: 1922,
address: '0x128A0F48A62E13BdB7848b7Ff8C4Cb988E17D66A',
data: '0xead1d7d49a537fb82d97de2b3f0fa9fc0647eead0610109f213e3082a35409c3',
topics: [Array],
type: 'mined',
id: 'log_6b6ed2c2' } ] }
@abhayks1 the large amount of gas consumed in requestStake
is for the deployment of the StakerProxy
contract. Can you run the numbers when the same staker does a second stake request; then the contract already exists.
We'll need to update the StakerProxy to a proxy contract in the other sense, to further bring down the gas cost in another ticket.
Gas analysis when staker does requestStake for first time
Gas Used: 724533
{ tx: '0x00ae84b1640217af3a2ba2948f31b24a98ae1daba7e70fab2750faded18b807e',
receipt:
{ transactionHash: '0x00ae84b1640217af3a2ba2948f31b24a98ae1daba7e70fab2750faded18b807e',
transactionIndex: 0,
blockHash: '0x4dfcff3b6051f4ffa158bbbff1b81dd4725b3de3419fa58d7b77906c57f69416',
blockNumber: 101,
from: '0xda3bbd42ba0a16be50ff2963947e03d7bab26291',
to: '0x126c59d4747852ca6ae3a5100cff930684b76f62',
gasUsed: 724533,
cumulativeGasUsed: 724533,
contractAddress: null,
logs: [ [Object] ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000001000000000000010000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000210000000000200000',
v: '0x1c',
r: '0xfb0718450557c2ac3ec7510cfaea9b91fa4dfe87b5a11d0f19e0ed36ec6686e1',
s: '0x46891ee371378bce5fb090c476feae0e0c510661725256130665e861be856d7f',
rawLogs: [ [Object] ] },
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0x00ae84b1640217af3a2ba2948f31b24a98ae1daba7e70fab2750faded18b807e',
blockHash: '0x4dfcff3b6051f4ffa158bbbff1b81dd4725b3de3419fa58d7b77906c57f69416',
blockNumber: 101,
address: '0x126C59D4747852Ca6aE3A5100cff930684b76F62',
type: 'mined',
id: 'log_d0c6d55c',
event: 'StakeRequested',
args: [Object] } ] }
Gas analysis when same staker does second stake request(StakerProxy contract already exists)
Gas Used: 149411
{ tx: '0xa16faade7b93dd88a9de6f7bd13d58bf2b56b55b1fea9ecf7642a302975bb166',
receipt:
{ transactionHash: '0xa16faade7b93dd88a9de6f7bd13d58bf2b56b55b1fea9ecf7642a302975bb166',
transactionIndex: 0,
blockHash: '0x21ccab52abb2adb6144f4ea9ea36688ed5527219233c4022e0955dabd508a804',
blockNumber: 102,
from: '0xda3bbd42ba0a16be50ff2963947e03d7bab26291',
to: '0x126c59d4747852ca6ae3a5100cff930684b76f62',
gasUsed: 149411,
cumulativeGasUsed: 149411,
contractAddress: null,
logs: [ [Object] ],
status: true,
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000001000000000000010000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000210000000000200000',
v: '0x1c',
r: '0x48018481bc1ca08a8d0021f47f2e5e5b2c906b0f5cc590674ed7517645a16735',
s: '0x4f4d5c27f8aca651e2c2f9daa957a59657234a27e1322077986966ac561a119c',
rawLogs: [ [Object] ] },
logs:
[ { logIndex: 0,
transactionIndex: 0,
transactionHash: '0xa16faade7b93dd88a9de6f7bd13d58bf2b56b55b1fea9ecf7642a302975bb166',
blockHash: '0x21ccab52abb2adb6144f4ea9ea36688ed5527219233c4022e0955dabd508a804',
blockNumber: 102,
address: '0x126C59D4747852Ca6aE3A5100cff930684b76F62',
type: 'mined',
id: 'log_44531c81',
event: 'StakeRequested',
args: [Object] } ] }
cc: @benjaminbollen
Storing
StakeRequest
objects in contract's storage are very expensive. Instead, we can change interfaces of the following external functions:acceptStakeRequest()
,revokeStakeRequest()
andrejectStakeRequest()
, to pass all needed params to calculate hash of aStakeRequest
.