แแแแแฉแแแแแก แแแแ แแ แฌแงแแแขแก แแ แ แแฎแแแแ แงแแแแแแแแ แ แแแแแขแแแแก, แแ แแแแ แซแแแแแ แฆแแ แแแฃแแ แแแแแแแก แฌแงแแ แแก แขแแฅแแแแแแแฃแ แ แแแแแกแแแ แแกแแ. แแแแขแแ, แแแ แแ แแแแ แแ แแฃแแ แ แแแแแแ แฅแแแแฅแแก แแแชแฎแแแ แแแแแแก. แแแแแแแแแแ แงแฃแ แแแฆแแแแ แแแแแ แแแแแแ, แกแฌแแแแแแแ, แชแแแแแแแ แแแแแแแแ แแแแแชแแแแแแ แแแแแแขแแแแ แขแ แแแแชแแฃแ แแแคแแแแแแจแ แแแแแฉแแแ แกแแกแขแแแแแแ. แฏแแ แฏแแ แแแแ, แแแ แแแ แแแแ: Rostelecom-Solar-แแก แแ แ-แแ แ แแแแแแแแ แแแแก แจแแฃแซแแแ แจแแแแแฌแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แฃแกแแคแ แแฎแแแแ แแแแแฉแแแแแ แแแคแฃแซแแแแฃแแ. แแ แแ แแแแแ แฉแแแแแ แแแ แแแแฃแแ แแแ แแแ แแแแแฉแแแแแก แกแแแแแแแแแแแก แแแแแงแแแแแแแ แแ แแแแแแแแแก แแแแแญแ แแแ. แแ แ-แแ แแ แแกแแแ แชแฎแแแ แแแแก แฐแแแ - แ แแแแ แแแแแกแแแฆแแ แแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแ แแแแแแแแแแแแ CREATE2-แแก แแแแแงแแแแแแ - แแฆแแก แแแแแ แแแแแแแแ แแ แญแ แแก แฅแแแจ.
CREATE2 opcode แแแแแแขแ แแแแกแขแแแขแแแแแแแแก แฐแแ แ แคแแ แแจแ แแแแแแแแ แ แฌแแแก 28 แแแแแ แแแแก. แ แแแแ แช EIP-แจแแ แแแแฅแแแแ, แแก แแแแแแ แซแแ แแแแแแ แกแแฎแแแแฌแแคแ แแ แฎแแแแกแแแแก แแงแ แจแแแแฆแแแฃแแ. แแฃแแชแ, แฉแแแ แแก แกแฎแแ แแ แแแแแแแก แแแแแกแแญแ แแแแ แแแแแแแงแแแแ.
แแแ แแแแ แแ แแแ แแแแฎแแแ แแแแแแ แแแจแแแแแ. แฉแแแ แแแแแแฃแ แแแแฎแแแ แแแแแก แฃแแแ แแแแแฌแแแแ Ethereum แแแกแแแแ แแ, แ แแแแแแแแแช แแแแแกแแแแ แก แจแแฃแซแแแ แแแแแแแแแก แขแแแแแแแ, แ แแแแช แจแแแแกแแก แแแแแกแ แแแแแ แแจแ. แแ แแแกแแแแ แแแแก แแฃแฌแแแแ โแกแแคแฃแแแแแโ. แ แแแแกแแช แแแขแแแแแ แกแแคแฃแแแจแ แฉแแแแแแก, แฉแแแ แฃแแแ แแแแแแแแแแ แแกแแแ แแ แ แกแแคแฃแแแจแ (แชแฎแแ แกแแคแฃแแ).
แจแแแแแ แแแแงแแคแแแแแแแจแ แแ แแแแแแแแแแ แแ แแ แแแแแแแก แแแแแญแ แแก แแแ แแแแขแแแก CREATE2-แแก แแแ แแจแ แแ แแแฎแกแแ, แ แแขแแ แแแแแขแแแแ แแกแแแ. แแฃ แแฅแแแ แแแแแขแแ แแกแแแฃแแ แฎแแ แ แแฎแแแแ แกแแแแแแ แจแแแแแแ, แจแแแแซแแแแ แแแแแแ แแก แกแแแแแแ แแแแแฌแงแแแขแแก แแแแงแแคแแแแแแจแ.
Ethereum แแแกแแแแ แแแแ
แฃแแแ แขแแแแกแ แแแแแกแแแแแแ แแฎแแแ แแแแ แแฃแแแก แแแกแแแแ แแแแแก แแแแแ แแ แแแ แแฎแแแ แแแแฎแแแ แแแแแแแกแแแแก. แแก แแแกแแแแ แแแแ แแฅแแแแ แกแแคแฃแแแแแ. แขแแแแแแแแก แกแแคแฃแแแแแ แชแฎแแ แกแแคแฃแแแจแ แแแแแกแแขแแแแ, แแฅแแแ แฃแแแ แแแแฌแแ แแ แขแ แแแแแฅแชแแ แคแฃแแฅแชแแแก แแแแแซแแฎแแแแ แแแแแชแแแ() แกแแคแฃแแแก แแแ แแแ แแแกแแฆแแแแ แฃแแแแ แแแฌแแแแแแ.
แแ แแแแแแแแก แแฅแแก แจแแแแแแ แฃแแแ แแขแแกแแแแแ:
- แแก แฃแแ แแแแ
- แขแแแแแแแแก แกแแคแฃแแแแแ แชแฎแแ แกแแคแฃแแแแ แแแแแขแแแแก แฆแแ แแแฃแแแแ แฃแแ แแก แคแฃแแฅแชแแแก แแแแแซแแฎแแแแก แฆแแ แแแฃแแแแแก แแแแแชแแแ()
แแฃแแชแ, แฉแแแ แแแแแขแแแแ แแก แแแแแแแ, แ แแแแแ แแแก แแฅแแก แแ แแ แแแแจแแแแแแแแแ แแแแแ: แกแแแแ แฃแแแ แจแแแแแฎแแ แแแ แแแ แแแกแแฆแแแแแ. แแ แแก แแ แแ แแก แแฎแแแแ แแก, แ แแ แแกแแแ แจแแแซแแแแ แแแแแแ แแแก, แแ แแแแ แแกแแช, แ แแ แแฅแแแ แฃแแแ แงแฃแ แแแฆแแแแ แแแ แแแ แแ แแแกแแฆแแแแแแ แฌแแแแแ. แแฃ แแ แแ แแแแแแแ แแแแแช แแแแแแแแแฃแแแ, แแแจแแ แแแแแ แแขแฃแแ แแแแฎแแแ แแแแแก แแแขแแแแแ แแแ แแแแฆแฌแแแก แชแฎแแ แกแแคแฃแแแก.
แจแแฅแแแแแ แชแแแแ แญแแแแแแ แแแแขแ แแฅแขแ แแแแแแฃแแ แแแแฎแแแ แแแแแกแแแแก
แแแแแแฃแแ แแแแฎแแแ แแแแแกแแแแก แชแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแ แแแ แกแแจแฃแแแแแแก แแแซแแแแ แแ แจแแแแแฎแแ แกแแ แแแ แแ แกแแคแฃแแแแแแก แแแ แแแ แแแกแแฆแแแแแ. แแแ แแ แแแฃแ แแแแแก แแ แกแแแ แข แแแแขแ แแฅแขแก แขแแแแแแแแก แชแฎแแ แกแแคแฃแแแแ แแแแแกแแขแแแแ.
แฉแแแ แแกแแแ แแแแแขแแแแ แแก แแแแแกแแแแแ, แ แแแแแ แแแแฎแแแ แแแแแก แแ แจแแฃแซแแแ แแฉแแแแแก แแแกแ แกแแคแฃแแแก แแแกแแแแ แแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแแแแแแก แแแ แแจแ (แแก แ แแแแฃแ แแ แจแแกแแซแแแแแแแ, แแแแ แแ แกแแแแแแ แ แแฃแแ แแแแ แกแฎแแ แฃแแ แงแแคแแแ แแฎแแ แแแแแ, แ แแแแแแกแแช แแฅ แแ แแแแแแฎแแแแแ). แแแ แแแแ แแแแฎแแแ แแแแแก แจแแฃแซแแแ แจแแฅแแแแก แแแแแแ แแแแแ แแจแ, แ แแแแแแแช แแแก แกแญแแ แแแแ แแ แงแแแแแก แกแญแแ แแแแ แกแแแฃแแแ แ แกแแคแฃแแ. แแก แแแจแแแแก, แ แแ แฉแแแ แแแญแแ แแแแ แคแฃแแแก แแแฎแแ แฏแแ แแแแขแ แแฅแขแแก แแแกแแจแแแแแ แแกแ, แ แแ แแ แแแงแแ แแแ แฌแแฃแแแแฃแแ, แ แแ แแแแฎแแแ แแแแแ แแแแแแงแแแแแก แแ แแแแแ แแจแก.
แแแแแแ CREATE2
แฌแแแ แแแแแแแก แแ แแแแแแแก แแแกแแแแแ แแแแแ แแแแแแฌแงแแแขแแ แแแแแแแแงแแแแแแแ CREATE2 opcode. CREATE2 แกแแจแฃแแแแแแก แแแซแแแแ แฌแแแแกแฌแแ แแแแกแแแฆแแ แแ แแแกแแแแ แแ, แกแแแแช แแแแแแแกแแแแ แญแแแแแแ แแแแขแ แแฅแขแ. แแแกแแแแ แแ แแแแแแแแแแแ แจแแแแแแ แคแแ แแฃแแแ:
keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]
แกแแ:
- แแแกแแแแ แแ โ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแ, แ แแแแแแช แแแฃแ แแแแแก CREATE2-แก
- แแแ แแแ - แจแแแแฎแแแแแแ แแแแจแแแแแแแ
- แกแแฌแงแแกแ_แแแแ - แญแแแแแแ แแแแขแ แแฅแขแแก แแแแขแแแแแ แแแแแแแแแแกแแแแก
แแก แฃแแ แฃแแแแแงแแคแก, แ แแ แแแกแแแแ แแ, แ แแแแแกแแช แฉแแแ แแแแฎแแแ แแแแแก แแแแแฌแแแแ, แ แแแแฃแ แแ แจแแแชแแแก แกแแกแฃแ แแแ แแแแขแแแแแก. แแกแแแ, แแก แญแแแแแแ แแแแขแ แแฅแขแ แจแแแซแแแแ แแแแแแแกแแแก, แ แแชแ แแแแแญแแ แแแแ. แแแแแแแแแ, แ แแแแกแแช แแแแฎแแแ แแแแแ แแแแแฌแงแแแขแก แแแแแแงแแแแก แแแแแกแ แกแแคแฃแแ แแแ แแแแแ.
แฃแคแ แ แแแขแแช, แจแแแแซแแแแ แงแแแแ แฏแแ แแ แแแแแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแกแแแแ แแ แแแกแ แจแแแแฎแแแก แแแชแแแแ, แ แแแแแ:
- แแแกแแแแ แแ แคแแ แแฃแแแจแ แแ แแก แแฃแแแแแ, แ แแแแแ แแก แแ แแก แฉแแแแ แกแแคแฃแแแแแแก แฅแแ แฎแแแก แแแกแแแแ แแ
- แแแ แแแ - user_id แฐแแจแ
- แกแแฌแงแแกแ_แแแแ แแฃแแแแแแ, แ แแแแแ แฉแแแ แแแงแแแแแ แแแแแ แกแแคแฃแแแก
แแแขแ แแแฃแแฏแแแแกแแแ
แฌแแแ แแแแแกแแแแแก แฏแแ แแแแแ แแฅแแก แแ แแ แแแแแ: แแฅแแแ แฃแแแ แแแแแแฎแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแแแแแ. แแฃแแชแ, แจแแแแซแแแแ แแแกแแแ แแแแแก แแแฆแฌแแแ. แแแแกแแแแแก แจแแแแซแแแแ แแแ แแแแ แคแฃแแฅแชแแ แแแแแชแแแ()แแ แจแแแแแ แแแแแแแแแแแฃแ แแแ() แกแแคแฃแแแก แแแแกแขแ แฃแฅแขแแ แจแ. แจแแแแแ แแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแแแแแแแแก แแแแ แแแแ แฃแแแแแ.
แแแแฃแแแ แฃแแ แ แฌแแแแแก แกแแฌแแแแแฆแแแแแแ, แแฅแแแ แจแแแแซแแแแ แแแแแแแแกแแ แญแแแแแแ แแแแขแ แแฅแขแ แแแแแ แแแกแแแแ แแแ แ แแแแแแฏแแ แแ CREATE2 opcode-แแ. แแก แแแแก แแแแ แฎแแแแ, แ แแ CREATE2 แแแแฌแแแแก, แ แแ แกแแแแแแ แแแกแแแแ แแแก แแ แแ แแแแ แแ แแก แแฃแแ (แแแก แแแแญแแแ แแแแจแแแแแแแ "1" แแแแกแขแ แฃแฅแขแแ แแก แแแกแแฌแงแแกแจแ). แแแแแ แแ แแก, แคแฃแแฅแชแแ แแแแแแแแแแแฃแ แแแ() แงแแแแ แฏแแ แแ แแฆแแแแแแก nonce แแแกแแแแ แแก. แแแแแแ แแ, แแฃ แแแแแ แแแแแแซแแฎแแแ CREATE2-แก แแแแแ แแ แแฃแแแแขแแแแ, nonce แจแแแแฌแแแแ แแแแแแแก.
แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แแก แแแแแกแแแแแ แแกแแแแกแแ ethereum-แแก แแแกแแแแ แแแก แแแแแฌแงแแแขแแก, แแแแ แแ แแแ แแแ แแแกแแฆแแแแแแก แจแแแแฎแแแก แกแแญแแ แแแแแก แแแ แแจแ. แกแแคแฃแแแแแ แชแฎแแ แกแแคแฃแแแแ แคแฃแแแก แแแแแ แแชแฎแแแก แฆแแ แแแฃแแแแ แแแแฎแแแแแแ แฃแแ แแก แคแฃแแฅแชแแแก แแแแแซแแฎแแแแก แฆแแ แแแฃแแแแแก แแแแแชแแแ(), แแแแแแแแ แฉแแแ แแ แแแฎแแแ แกแแแ แข แแแแขแ แแฅแขแแก แแแแแแแแแแก.
แฒกแแแแแแ แแแแแฌแงแแแขแแแแแ
แแแแแแแแ แแแแแ แแแแแแแแแฃแแ:
- แแแ แแแแก แแแฆแแแแก แคแฃแแฅแชแแ แแแแฎแแแ แแแแแก แแแแแขแแคแแแแชแแ
- แญแแแแแแ แแแแขแ แแฅแขแ, แ แแแแแแช แแแแแแซแแฎแแแก CREATE2 opcode-แก แจแแกแแแแแแกแ แแแ แแแแ (แแแฃ แกแแคแฃแแแก แฅแแ แฎแแแ)
- แกแแคแฃแแแก แแแแขแแแแแ, แ แแแแแแช แจแแแกแแแแแแแ แแแแขแ แแฅแขแก แจแแแแแ แแแแกแขแ แฃแฅแขแแ แแแ:
constructor () {
address hotWallet = 0xโฆ;
address token = 0xโฆ;
token.transfer (hotWallet, token.balanceOf (address (this)));
selfdestruct (address (0));
}
แงแแแแแ แแฎแแแ แแแแฎแแแ แแแแแกแแแแก แฉแแแ แแแฉแแแแแแ แแแก แกแแคแฃแแแก แแแกแแแแ แแก แแแแแแแแแแแ
keccak256 (0xff ++ address ++ salt ++ keccak256 (init_code)) [12:]
แ แแแแกแแช แแแแฎแแแ แแแแแ แแแแแกแชแแแก แขแแแแแแแก แกแแคแฃแแแก แจแแกแแแแแแก แแแกแแแแ แแแ, แฉแแแแ แแแฅแแแแ แฎแแแแแก แแแแแชแแแแก แแแแแแแแก แแแ แแแแขแ แแ _ แแแแกแแคแฃแแแก แแแกแแแแ แแแก แขแแแ. แแ แแขแแแแ แฃแแแ แจแแกแแซแแแแแแแ แแแแฎแแแ แแแแแก แแแแแแกแแก แแแแ แแ แแแ แแแแ แกแแคแฃแแแก แแแแแแแกแแแแแแ.
แ แแแแกแแช แกแแคแฃแแแก แแแกแแแแ แแจแ แกแแแแแ แแกแ แแแขแแแแแ แแแแ แแแแแแ, แฉแแแ แจแแแแแซแแแ แแกแแแ แแ แแแ แแฃแแแ แแแแแแแขแแแแ แชแฎแแ แกแแคแฃแแแจแ. แแแแกแแแแแก backend แแซแแฎแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แฅแแ แฎแแแก แคแฃแแฅแชแแแก, แ แแแแแแช แแกแ แฃแแแแก แจแแแแแ แแแฅแแแแแแแแก:
function deployWallet (ัะพะปั uint256) {
bytes memory walletBytecode =โฆ;
// invoke CREATE2 with wallet bytecode and salt
}
แแแ แแแแ, แแฌแแแแแ แกแแคแฃแแแก แญแแแแแแ แแแแขแ แแฅแขแแก แแแแกแขแ แฃแฅแขแแ แ, แ แแแแแแช แแแแแกแชแแแก แแแแแก แงแแแแ แขแแแแแก แชแฎแแแ แกแแคแฃแแแก แแแกแแแแ แแแ แแ แจแแแแแ แฎแแแแ แแแแแแแแแแแฃแ แแแ.
แกแ แฃแแ แแแแแก แแแฎแแ แจแแแแซแแแแ
แแแขแแ แ แแแแแ แแแแแ แแขแแแแแแ, Ethereum-แแก แกแแแชแแแแแกแขแ
แฌแงแแ แ: www.habr.com