Solidity之地址(address)

概览

  1. 什么是ETH地址?
  2. 可支付地址
  3. 地址对应的方法(solidity)
  4. 检查地址是否存在
  5. 零地址
  6. 地址相关的web3.js

介绍

ETH中的地址都是唯一的,因为他们都是来自一个公钥或者合约。

在ETH交易中的支付环节,预期的收款人都是一个地址。类似于银行中的转账账号。

ETH中的地址(address)分为两种:

  1. Externally Owned Accounts (EOA)(外部拥有账户):这些账户通过私钥来控制。通过私钥可以控制账户中的TOKEN,在和智能合约进行交互的时候,私钥还可以用来提供身份认证。
  2. Contracts Accounts (Smart Contracts)(合约地址):这些账号是通过代码(solidity)控制的。和EOAs账号不同的是,智能合约账号是没有关联一个秘钥的。因为智能合约不受私钥控制,所以我们可以说智能合约是独立的。每个合约的地址都来自于合约创建的交易。ETH的合约地址可以作为交易中的接收者,发送token到合约或者调用别的合约中的方法。

什么是ETH地址(技术上)?

hash函数是把ETH公钥(或者合约)转化为地址的关键。ETH使用hash函数(keccak-256)来生成地址。在ETH或者solidity中,一个地址由20byte长度的值组成,这个地址对应于公钥的hash函数(keccak-256)的最后20bytes的值。一个地址总固定是以ox开头,因为它是以16进制的格式表示的。

下面就来详细的介绍下如何创建地址:

  1. 首先我们拿到一个公钥

    pubKey = 6e145ccef1033dea239875dd00dfb4fee6e3348b84985c92f103444683b......
    
  2. 对这个公钥进行hash(keccak-256)运算,最后输出一个64个字符/32bytes长度的字符串。

    Keccak256(pubKey) = 2a5bc342ed616b5ba5732269001d3f1ef827552ae1114027bd3ecf1f086ba0f9
    
  3. 截取hash结果字符串末尾的40个字符/20bytes.这个40个字符/20bytes就是我们的地址</

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值