Pehea e hoʻoholo ai i ka helu wahi o kahi ʻaelike akamai ma mua o ka hoʻolaha ʻana: me ka hoʻohana ʻana iā CREATE2 no kahi hoʻololi crypto

ʻAʻole i pau ke kumuhana o ka blockchain i kumu o nā ʻano hype wale nō, akā, ʻo nā manaʻo hoʻi i waiwai nui mai kahi ʻano ʻenehana. No laila, ʻaʻole ia i kāʻalo i nā kamaʻāina o ke kūlanakauhale lā. Ke nānā pono nei ka poʻe, ke aʻo ʻana, e hoʻāʻo nei e hoʻololi i ko lākou ʻike i ka palekana ʻike kuʻuna i nā ʻōnaehana blockchain. I kēia manawa, ʻike ʻia: hiki i kekahi o nā hoʻomohala ʻo Rostelecom-Solar ke nānā i ka palekana o ka polokalamu blockchain-based. A ma ke ala, ua kū mai kekahi mau manaʻo i ka hoʻoponopono ʻana i nā pilikia pili o ke kaiāulu blockchain. ʻO kekahi o kēia mau hacks ola - pehea e hoʻoholo ai i ka helu o kahi ʻaelike akamai ma mua o ka hoʻohana ʻana me CREATE2 - i kēia lā makemake wau e kaʻana like me ʻoe ma lalo o ka ʻoki.

Pehea e hoʻoholo ai i ka helu wahi o kahi ʻaelike akamai ma mua o ka hoʻolaha ʻana: me ka hoʻohana ʻana iā CREATE2 no kahi hoʻololi crypto
Ua hoʻohui ʻia ka CREATE2 opcode i ka lāʻau paʻakikī Constantinople ma Pepeluali 28 o kēia makahiki. E like me ka mea i ʻōlelo ʻia ma ka EIP, ua hoʻokomo mua ʻia kēia opcode no nā ala mokuʻāina. Eia naʻe, ua hoʻohana mākou iā ia e hoʻoponopono i kahi pilikia ʻē aʻe.

Aia nā mea hoʻohana me nā koena ma ka hoʻololi. Pono mākou e hāʻawi i kēlā me kēia mea hoʻohana i kahi helu Ethereum i hiki i kekahi ke hoʻouna i nā hōʻailona, ​​​​a laila e hoʻopiha i kā lākou moʻokāki. E kapa mākou i kēia mau ʻōlelo he "wallets". Ke hiki mai nā hōʻailona i loko o nā ʻeke, pono mākou e hoʻouna iā lākou i hoʻokahi ʻeke (hotwallet).

Ma nā ʻāpana aʻe, ʻike wau i nā koho no ka hoʻoponopono ʻana i kēia pilikia me ka ʻole o CREATE2 a haʻi iā ʻoe i ke kumu i haʻalele ai mākou iā lākou. Inā makemake wale ʻoe i ka hopena hope loa, hiki iā ʻoe ke loaʻa iā ia ma ka ʻāpana "Final Solution".

Heluhelu Ethereum

ʻO ka hopena maʻalahi ka hana ʻana i nā helu Ethereum hou no nā mea hoʻohana hou. ʻO kēia mau helu wahi nā ʻeke kālā. No ka hoʻoili ʻana i nā hōʻailona mai kahi ʻeke kālā i hotwallet, pono ʻoe e kau inoa i ke kālepa ma ke kāhea ʻana i ka hana hoʻoili () me ke kī pilikino o ka ʻeke mai ka hope.

Loaʻa i kēia ala nā pōmaikaʻi:

  • ua pono ia
  • ʻO ke kumukūʻai o ka hoʻoili ʻana i nā hōʻailona mai kahi ʻeke kālā i hotwallet e like me ke kumukūʻai o kahi kelepona hana hoʻoili ()

Eia naʻe, ua hoʻoholo mākou e kūʻē i kēia ala no ka mea hoʻokahi drawback nui: pono ʻoe e mālama i nā kī pilikino ma kahi. ʻAʻole hiki iā lākou ke nalowale wale nō, akā pono ʻoe e mālama pono i ke komo ʻana i kēia mau kī. Inā hoʻololi ʻia kekahi o lākou, a laila ʻaʻole hiki i nā hōʻailona o kahi mea hoʻohana i ka ʻeke wela.

Pehea e hoʻoholo ai i ka helu wahi o kahi ʻaelike akamai ma mua o ka hoʻolaha ʻana: me ka hoʻohana ʻana iā CREATE2 no kahi hoʻololi crypto

E hana i kahi ʻaelike akamai kaʻawale no kēlā me kēia mea hoʻohana

ʻO ka hāʻawi ʻana i kahi ʻaelike akamai ʻokoʻa no kēlā me kēia mea hoʻohana e hiki iā ʻoe ke pale i ka mālama ʻana i nā kī pilikino no nā wallets ma ke kikowaena. E kāhea ka hoʻololi i kēia ʻaelike akamai e hoʻoili i nā hōʻailona i ka hotwallet.

Ua haʻalele pū mākou i kēia hoʻonā, no ka mea ʻaʻole hiki ke hōʻike ʻia ka mea hoʻohana i kāna helu ʻeke kālā me ka ʻole o ka lawe ʻana i kahi ʻaelike akamai (hiki maoli nō kēia, akā ma ke ʻano paʻakikī me nā hemahema ʻē aʻe ʻaʻole mākou e kūkākūkā ma aneʻi). Ma ka hoʻololiʻana, hiki i ka mea hoʻohana ke hana i nā moʻolelo he nui e like me kona makemake, a pono kēlā me kēia mea i kāna pēke pono'ī. 'O ia ho'i, pono mākou e ho'olilo i ke kālā ma ka ho'olālā 'ana i kahi 'aelike me ka maopopo 'ole e ho'ohana ka mea ho'ohana i kēia mo'okāki.

Opcode CREATE2

No ka hoʻoponopono ʻana i ka pilikia o ke ʻano ma mua, ua hoʻoholo mākou e hoʻohana i ka CREATE2 opcode. ʻAe ʻo CREATE2 iā ʻoe e hoʻoholo mua i ka helu wahi e kau ʻia ai ka ʻaelike akamai. Ua helu ʻia ka helu wahi me ka hoʻohana ʻana i kēia ʻano:

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


, ma hea:

  • aae? - ka helu wahi o ka ʻaelike akamai e kapa ʻia ʻo CREATE2
  • paʻakai - waiwai kūpilikiʻi
  • init_code — bytecode ʻaelike akamai no ka hoʻouka ʻana

Mālama kēia i ka helu wahi a mākou e hāʻawi ai i ka mea hoʻohana i ka bytecode makemake. Eia kekahi, hiki ke kau ʻia kēia ʻaelike akamai i nā manawa a mākou e pono ai. No ka laʻana, ke hoʻoholo ka mea hoʻohana e hoʻohana i kā lākou ʻeke no ka manawa mua.
Pehea e hoʻoholo ai i ka helu wahi o kahi ʻaelike akamai ma mua o ka hoʻolaha ʻana: me ka hoʻohana ʻana iā CREATE2 no kahi hoʻololi crypto
Eia kekahi, hiki iā ʻoe ke helu i ka helu ʻaelike akamai i kēlā me kēia manawa ma kahi o ka mālama ʻana no ka mea:

  • aae? i loko o ke ʻano he mau, ʻoiai ʻo ia ka helu o kā mākou hale hana ʻeke kālā
  • paʻakai — user_id hash
  • init_code ua mau ʻoiai mākou e hoʻohana ai i ka ʻeke kālā hoʻokahi

Hoʻonui hou aku

He hoʻokahi drawback ka hoʻonā mua: pono ʻoe e uku e kau i ka ʻaelike akamai. Eia naʻe, hiki iā ʻoe ke hoʻopau iā ia. No ka hana ʻana i kēia hiki iā ʻoe ke kāhea i ka hana hoʻoili ()a laila hoopau iho() i loko o ka mea hana ʻeke kālā. A laila e hoʻihoʻi ʻia ke kinoea no ka lawe ʻana i ka ʻaelike akamai.

Kūlike ʻole i ka manaʻo kaulana, hiki iā ʻoe ke kau i kahi ʻaelike akamai i ka helu like i nā manawa he nui me ka CREATE2 opcode. ʻO kēia no ka mea ʻo CREATE2 e nānā i ka nonce o ka helu kuhi he zero (ua hāʻawi ʻia i ka waiwai "1" ma ka hoʻomaka o ka mea hana). Ma keia hihia, ka hana hoopau iho() hoʻihoʻi hou i nā helu nonce i kēlā me kēia manawa. No laila inā ʻoe e kāhea hou iā CREATE2 me nā manaʻo like, e hala ka nonce check.

Eʻoluʻolu e hoʻomaopopo he like kēia hoʻonā me ka koho helu Ethereum, akā me kaʻole o ka pono e mālama i nā kī pilikino. ʻO ke kumukūʻai o ka hoʻololi ʻana i ke kālā mai kahi ʻeke kālā i ka hotwallet ua like ia me ke kumukūʻai o ke kāhea ʻana i kahi hana hoʻoili (), no ka mea, ʻaʻole mākou e uku no ka hoʻolaha ʻana i ka ʻaelike akamai.

Hoʻoholo hope

Pehea e hoʻoholo ai i ka helu wahi o kahi ʻaelike akamai ma mua o ka hoʻolaha ʻana: me ka hoʻohana ʻana iā CREATE2 no kahi hoʻololi crypto

Ua hoʻomākaukau mua ʻia e:

  • hana e loaa ka paakai ma hoʻohana_id
  • he ʻaelike akamai e kapa aku i ka CREATE2 opcode me ka paʻakai kūpono (ʻo ia hoʻi ka hale hana ʻeke kālā)
  • wallet bytecode e pili ana i ka aelike me ka mea hana penei:

constructor () {
    address hotWallet = 0x…;
    address token = 0x…;
    token.transfer (hotWallet, token.balanceOf (address (this)));
    selfdestruct (address (0));
}


No kēlā me kēia mea hoʻohana hou, hōʻike mākou i kāna helu ʻeke kālā ma ka helu ʻana

keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]


Ke hoʻololi ka mea hoʻohana i nā hōʻailona i ka helu peke pili, ʻike kā mākou hope i kahi hanana Hoʻololi me ka ʻāpana _i, e like me ka helu wahi ʻeke. I kēia manawa, hiki ke hoʻonui i ke koena o ka mea hoʻohana ma ka hoʻololi ʻana ma mua o ka waiho ʻana i ka ʻeke.

Ke hōʻiliʻili kahi helu ʻeke kālā i ka helu kūpono o nā hōʻailona, ​​hiki iā mākou ke hoʻololi iā lākou āpau i ka manawa hoʻokahi i hotwallet. No ka hana ʻana i kēia, kāhea ka backend i ka hana ʻoihana ʻoihana akamai, e hana ana i kēia mau hana:

function deployWallet (соль uint256) {
    bytes memory walletBytecode =…;
    // invoke CREATE2 with wallet bytecode and salt
}


No laila, kapa ʻia ka mea hana ʻaelike akamai, e hoʻoili i kāna mau hōʻailona a pau i ka helu hotwallet a laila luku iā ia iho.

Hiki ke loaʻa ke code piha maanei. E ʻoluʻolu, ʻaʻole kēia kā mākou code hana, no ka mea, ua hoʻoholo mākou e hoʻomaikaʻi i ka bytecode wallet a kākau iā ia i nā opcodes.

ʻO ka mea kākau ʻo Pavel Kondratenkov, ka loea Ethereum

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka