全部教程·
区块链·
以太坊指南
[目录]
·
以太坊 EIP-55 账户地址
以太坊指南
第1章 一台全球计算机
以太坊 历史 以太坊 发展阶段 以太坊 特色第2章 账户是什么
以太坊 基础知识 Keystore 与私钥保存 以太坊 常用钱包 以太坊 EIP-55 账户地址第3章 交易是驱动力
以太坊 交易是驱动力 以太坊 交易发送 以太坊 交易方法 以太坊 交易生命周期 共识与工作量证明 矿工与挖矿奖励第4章 数据结构
以太坊 数据结构 以太坊 Radix树 以太坊 Merkle树 Merkle Patricia树 以太坊 RLP编码 以太坊 状态树 以太坊 交易树 以太坊 收据树 以太坊 区块第5章 构建私链
以太坊 安装geth 以太坊 启动私链 以太坊 接收挖矿奖励 以太坊 转账与收款第6章 部署智能合约
以太坊 部署智能合约 以太坊 什么是智能合约 以太坊 安装编译器 Solc 编译智能合约 智能合约发布准备 部署智能合约 调用智能合约第7章 以太坊虚拟机
以太坊虚拟机 虚拟机的执行结果 虚拟机的执行资源 合约调用合约 虚拟机的输入输出 Gas 花费与退回 虚拟机指令集第8章 Solidity 语法
Solidity 语法练习 Solidity 基础语法 Solidity 语法进阶 Solidity 高级语法 Solidity 安全第9章 Truffle 开发
Truffle 合约开发 编译、测试工具安装 Truffle 启动样例 Truffle ERC20合约 Truffle ERC20合约测试Truffle 冷知识
Truffle 冷知识 短地址攻击 比特币的区块 以太坊与比特币账户的区别 “不可能的三角”问题 ETHASH 挖矿算法
以太坊指南
第1章 一台全球计算机
以太坊 历史 以太坊 发展阶段 以太坊 特色第2章 账户是什么
以太坊 基础知识 Keystore 与私钥保存 以太坊 常用钱包 以太坊 EIP-55 账户地址第3章 交易是驱动力
以太坊 交易是驱动力 以太坊 交易发送 以太坊 交易方法 以太坊 交易生命周期 共识与工作量证明 矿工与挖矿奖励第4章 数据结构
以太坊 数据结构 以太坊 Radix树 以太坊 Merkle树 Merkle Patricia树 以太坊 RLP编码 以太坊 状态树 以太坊 交易树 以太坊 收据树 以太坊 区块第5章 构建私链
以太坊 安装geth 以太坊 启动私链 以太坊 接收挖矿奖励 以太坊 转账与收款第6章 部署智能合约
以太坊 部署智能合约 以太坊 什么是智能合约 以太坊 安装编译器 Solc 编译智能合约 智能合约发布准备 部署智能合约 调用智能合约第7章 以太坊虚拟机
以太坊虚拟机 虚拟机的执行结果 虚拟机的执行资源 合约调用合约 虚拟机的输入输出 Gas 花费与退回 虚拟机指令集第8章 Solidity 语法
Solidity 语法练习 Solidity 基础语法 Solidity 语法进阶 Solidity 高级语法 Solidity 安全第9章 Truffle 开发
Truffle 合约开发 编译、测试工具安装 Truffle 启动样例 Truffle ERC20合约 Truffle ERC20合约测试Truffle 冷知识
Truffle 冷知识 短地址攻击 比特币的区块 以太坊与比特币账户的区别 “不可能的三角”问题 ETHASH 挖矿算法以太坊 EIP-55 账户地址
在钱包的实际使用过程中,以太坊的用户发现,由于缺乏类似比特币的自带地址校验机制,以太坊的公开地址在当朋友之间转账时,经常因为误输入字符而转错了账号。
社区用户在以太坊很早期的时候,就已经提出该问题并思考改进的方法,经过整理成文,形成了 EIP-55 提议 [1]。
该提议按照一定逻辑,将地址中的部分字母大写,与剩余的小写字母来形成校验和,让地址拥有自校验的能力,具体的代码如清单2-5所示。
const createKeccakHash = require('keccak')
function toChecksumAddress (address) {
address = address.toLowerCase().replace('0x', '')
var hash = createKeccakHash('keccak256').update(address).digest('hex')
var ret = '0x'
for (var i = 0; i < address.length; i++) {
if (parseInt(hash[i], 16) >= 8) {
ret += address[i].toUpperCase()
} else {
ret += address[i]
}
}
return ret
}
下表对列举了带校验的地址和普通的地址的对比。这种校验方式可以与旧版本的20个字节的普通地址保持长度一致。
EIP-55 方案在地址中平均生成 15 个检查点,将错误输入未能被校验的失误率降到 0.0247% 以下。 目前该地址格式已经被客户端广泛采用,并显著减少了转账出错的情况。
| 带校验地址 (大小写区分) | 0x7c52e508C07558C287d5A453475954f6a547eC41 |
| 普通地址 (全小写) | 0x7c52e508c07558c287d5a453475954f6a547ec41 |
Javascript代码可以参考 Github 项目:http://github.com/laalaguer/VeChain-Address/
| [1] | Vitalik Buterin, Alex Van de Sande, (2016) ‘Mixed-case checksum address encoding’, Available at: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-55.md |
下一章:以太坊 交易是驱动力
我们分析了以太坊的静态部分:用户账户模型和账户状态所组成的世界状态。本章节将分析以太坊上驱动账户余额发生转变的动因,就是交易transaction。交易总是由外部账户所发起的,它所包含的内容既可以是一次简单的以太币转移 ...
AI 中文社