以太坊外部账户EOA与合约账户CA的区别

    在以太坊中,账户拥有4个字段:{nonce,balance,codeHash,StorageRoot}。
    一共分为2种账户:外部账户、合约账户。
    外部账户,Externally Owned Accounts,简称EOA,它拥有私钥,其codeHash为空。
    合约账户,Contact Account,简称CA,它没有私钥,其codeHash非空。

比较外部账户合约账户
拥有私钥
codeHash内容为空非空
主动发起交易否,只能被动发起交易
拥有余额
地址长度20字节20字节

    判断一个地址是否为合约地址的方法如下:
    //judge.sol

// SPDX-License-Identifier: MIT

pragma solidity ^0.6.2;


library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }
}    
   
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sanqima

一键三连,多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值