方法返回指定地址上代码的16进制芓符串由于普通账户地址处没有代码,因此将仅返回16进制前缀0x
利用这个我们可以进行判断,例如:
在合约内可以使用EVM汇编代码来获取指定地址处的代码大小,显然普通账户地址将返回0
:
如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程:
大家在投资过程中以太坊系钱包有几个名词必须深刻理解,不然就有可能造成区块链资产的损失这几个名词为地址、密码、私钥、助记词、keystore。下面给大家介绍一下若以银行账户为类比,这 5 个词分别对应内容如下:地址=银
大家在投资过程中以太坊系钱包有几个名词必须深刻理解,不然就有可能造成區块链资产的损失这几个名词为地址、密码、私钥、助记词、keystore。下面给大家介绍一下
若以银行账户为类比,这 5 个词分别对应内容如下:
私钥=银行卡号+银行卡密码
助记词=银行卡号+银行卡密码
创建钱包后会生成一个以 0x 开头的 42 位字符串这个字符串就是钱包地址,一个钱包对應一个钱包地址地址唯一且不能修改,也就是说一个钱包中所有代币的转账收款地址都是一样的例如,一个钱包中 ETH 的转账收款地址和 EOS 嘚转账收款地址是一样这一点和交易平台上的不一样,平台上不同代币的转账收款地址一般都不同因此,转币到交易平台前一定要确認好地址
钱包地址可以用于接收别人转币,也可以作为转币的凭证
在创建钱包时,需要设定一个密码这个密码要求不少于 8 个字符,為了安全密码最好设置复杂一点。密码可以进行修改或重置修改密码有两种方法,一是直接修改密码这需要输入原密码。如果原密碼忘记了用助记词或私钥导入钱包,同时设置新密码
密码的用途有两个,一是转账时候的支付密码二是用 keystore 导入钱包时的登录密码。
茬现实世界中一个银行卡只对应一个密码,对密码修改后原密码就失去作用。但是在 钱包中就不一样了,一个钱包在不同手机上可鉯用不同的密码彼此相互独立,互不影响例如,在 A 手机钱包中设置了一个密码在 B 手机导入这个钱包并设置一个新密码,并不影响 A 手機钱包的密码使用
私钥=银行卡号+银行卡密码
创建钱包后,输入密码可以导出私钥这个私钥属于明文私钥,由 64 位字符串组成一个钱包呮有一个私钥且不能修改。
在导入钱包中输入私钥并设置一个密码(不用输入原密码),就能进入钱包并拥有这个钱包的掌控权就可以把錢包中的代币转移走。
助记词=银行卡号+银行卡密码
创建钱包后会出现一个备份助记词功能,选择备份助记词输入密码,会出现 12 个单词每个单词之间有一个空格,这个就是助记词一个钱包只有一个助记词且不能修改。
助记词是私钥的另一种表现形式具有和私钥同样嘚功能,在导入钱包中输入助记词并设置一个密码(不用输入原密码),就能进入钱包并拥有这个钱包的掌控权就可以把钱包中的代币转迻走。
助记词只能备份一次备份后,在钱包中再也不会显示因此在备份时一定要抄写下来。
钱包里有一个备份 keystore 功能选择备份 keystore,输入密码会出现一大段字符,这个就是 keystore
在导入钱包中,选择官方钱包输入 keystore 和密码,就能进入钱包了需要说明的是,这个密码是本手机原来设置的本钱包密码 这一点和用私钥或助记词导入钱包不一样,用私钥或助记词导入钱包不需要知道原密码,直接重置密码
keystore 属于加密私钥,和钱包密码有很大关联钱包密码修改后,keystore 也就相应变化在用 keystore 导入钱包时,需要输入密码这个密码是备份 keystore 时的钱包密码,與后来密码的修改无关
在现实世界中,如果你的银行卡丢了密码忘了,可以去银行帮你找回你的钱还是你的钱,丢不了这是中心囮的优势。
但是在区块链世界中除了你自己,没有人存储你的钱包信息钱包信息要是丢了,没人能够帮你找回钱包公司也不能。因此只要你保护好钱包信息,钱包里面的财产只属于你自己谁也抢不走,这是去中心化的优势
以太坊钱包地址忘了怎么办?
你若把钱包信息忘了,会有什么后果呢?分这么几种情况:
(1)地址忘了可以用私钥、助记词、keystore+密码,导入钱包找回
(2)密码忘了,可以用私钥、助记词導入钱包重置密码。
(3)密码忘了私钥、助记词又没有备份,就无法重置密码就不能对代币进行转账,等于失去了对钱包的控制权
(5)私钥莣了,只要以太坊钱包没有删除并且密码没忘,可以导出私钥
(7)助记词忘了,可以通过私钥、keystore+密码导入钱包重新备份助记词。
(8)keystore 忘了呮要你钱包没有删除,密码没忘可以重新备份keystore。
从上可以看出只要「私钥、助记词、Keystore+密码」有一个信息在,钱包就在因此,备份好「私钥、助记词、Keystore+密码」最关键
自己备份好钱包信息很重要,同时防止钱包信息泄漏也很重要。若把钱包信息泄漏出去了会有什么後果呢?分这么几种情况:
(1)地址泄漏了,没有关系
(2)密码泄漏了,没有关系
(3)地址+密码泄漏了,只要手机不丢也没有关系。
泄漏了密码沒有泄漏,没有关系
泄漏了,别人就能进入钱包把币转走。
泄漏了别人就能进入钱包,把币转走
从上可以看出,只要「私钥、助記词、Keystore+密码」有一个信息泄漏出去别人就拥有了你钱包的控制权,你钱包中的币就会被别人转移走因此,「私钥、助记词、Keystore+密码」绝鈈能泄漏出去一旦发现有泄漏的可能,就要立刻把里面的币转移走
既然私钥、助记词、Keystore+密码」如此重要,那么如何进行保存呢最安铨的方法就是:
由于 Keystore 内容较多,手抄不方便保存在电脑上也不安全,因此可以不对 Keystore 进行备份只手抄私钥、助记词就足够了,手抄备份偠注意以下几点:
(1)多抄几份分别放在不同的安全区域,并告诉家人
(2)对手抄内容进行验证,导入钱包看能不能成功防止抄写错误。
(3)备份信息不要在联网设备上进行传播包括邮箱、QQ、微信等。
(4)教会家人操作钱包
电子钱包和真实的钱包非常像,如果你的钱包私钥丢失伱是真的无法找回来,所以第一个功课你要学习的就是如何备份钱包如果钱包没了,你的资产也没了!
在以太坊中有两种类型的账户:一种是外部账户(EOAs,Externally Owned Accounts)另一种是合约账户(Contracts Accounts)。当我们提到账户这个术语的时候我们通常指的是外部账户(EOA),当提到合约账户的時候我们通常称其为“合约”
它们在以太坊中所维护的都是一系列叫做状态对象(state objects)的实体。这些实体中都拥有状态信息:外部账户存儲的是账户的余额(balance)合约账户存储的是余额和合约中的内容。
对于外部账户来说地址表示的是该账户公钥的后20字节(通常会以0x开头,例如0xcd2a3d9f938e13cd947ec05abc7fe734df8dd826,该地址使用的是16进制表示法)上述示例中的地址中的字母全部是小写。在EIP55中引入了一种大小写混用的地址表示方法通过这種表示方法进行表示的地址隐含了一个校验和(checksum)能够验证该地址的有效性。
每个账户都由一对钥匙定义一个私钥(Private Key)和一个公钥(Public Key)。 账户以地址为索引地址由公钥衍生而来,取公钥的最后20个字节每对私钥/地址都编码在一个钥匙文件里(Keystore)。
地址的生成的流程是:私钥 -> 公钥 -> 地址因此地址的生成需要三步:
1、生成一个随机的私钥(32字节)
2、通过私钥生成公钥(64字节)
3、通过公钥得到地址(20字节)
私鑰是一组64位的16进制字符,通过私钥我们能够访问一个账户以太坊的私钥生成是通过secp256k1曲线生成的,secp256k1是一个椭圆曲线算法比特币使用的也昰相同的曲线算法。
地址是通过对上述的公钥做Keccak-256哈希然后取最后的40位16进制字符得到的。我们对上述的公钥做哈希后并取后40位的结果是:0xb6cad0e143ce9fabf31f得到的该结果就是一个有效的以太坊地址怎么弄。