修改以太坊的地址思路

首先了解以太坊地址的生成方式:

第一步:创建一个随机私钥。

第二步:根据私钥,利用ECDSA算出公钥,公钥以0x04开头。

第三步: 把公钥去掉0x04,剩下的进行keccak-256的哈希,得到长度64的16进制字串,丢掉前面24个,拿后40个,再加上”0x”,即为以太坊地址。

想要更改以太坊的地址格式,思路有很多,例如:使用ECDSA之外的曲线、使用其他的hash方式、截取不同长度的字符串、地址使用别的编码方式显示等等。思路确定了之后,就需要修改源码了,从以下几个地方入手:

1,生成个人账户地址

不论是使用命令行geth account new命令,还是在控制台使用personal.newAccount()命令,最终代码都会进入到/accounts/keystore/key.gostoreNewKey方法,在这里可以进行上述思路的修改。

2,解析地址

每个api入口的地方几乎都会用到地址,这里可以定义一个公共方法对地址进行解码,每个api都调用该方法。

3,合约生成地址

从sendTransaction接口追踪到交易的接收地址为空,进入合约创建代码,找到生成合约地址的地方CreateAddress方法。

4,已有的钱包、浏览器等程序地址的升级

如果之前已经有了钱包,浏览器等工具,需要翻新一遍。

5,remix

基于solidity的智能合约是以太坊的核心功能,所以必须考虑到它,如果改变了原有地址的生成方式,那么以太坊官方提供的remix编译器就不能够再使用,需要自己重新编译一个solidity编译器,remix的代码是开源的,在以太坊的github项目中可以找到,修改地址生成方式以适应合约中Address变量类型。


转载请注明来源

×

喜欢就点赞,疼爱就打赏