以太坊上的几种签名: eth_sign, personal_sign, eth_signTypedData
以太坊的签名算法是ECDSA-secp256k1,以下介绍的每一种签名都是基于该算法,只是用来签名的数据不同。1 交易签名 eth_sign以太坊上,签名之前的交易结构如下。let transaction = { to: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', value: ethers.utils.parseEther('1'), data: '0xE0A293E08F72454CEd99E1769c3ebd21fD2C20a1', gasLimit: '22000', maxFeePerGas: ethers.utils.parseUnits('20', 'gwei'), maxPriorityFeePerGas: ethers.utils.parseUnits('5', 'gwei'), nonce: 1, type: 2, chainId: chainId, // 31337 } 各项目的含义不再介绍,有兴趣可以查阅https://ethereum.org/en/developers/docs/transactions/...
Solidity学习-可升级合约(Transparent/UUPS/Beacon)
以太坊合约原生并不支持升级,目前的升级一般是采用代理模式实现的。代理模式在代理模式中,有2个合约:Proxy和Implementation,用户总是和Proxy进行交互。Proxy在收到用户的调用请求后,并不执行自身的代码,而是通过delegatecall去执行Implementation合约的代码。delegatecall的特殊之处就是,它并不切换上下文,因此Implementation的代码所处理的存储空间是Proxy合约的存储空间,而非自己的。 Proxy合约里存储了Implementation合约的地址,这个地址是可修改的,当我们需要进行合约升级的时候,只需要重新部署一个新的Implementation合约,同时把Proxy合约中存储的地址改成新合约的地址就行了。升级前后,合约的存储空间没有任何变化(依然是Proxy的存储空间),地址也没有变化(依然是Proxy的地址),因此升级过程对用户完全透明。 合约升级之后,要保证storage变量的兼容性。新版本可以在旧版本的变量之后增加新的变量,但是不可以删除或者修改旧版本的变量。因为自始自终,变量都只存储在Proxy合约里,升...
用golang开发ethereum
之前看到一个用golang开发以太坊的教程 https://goethereumbook.org/zh/ 这个教程非常详细,然而它太陈旧了,目前很多go-ethereum函数接口已经有所修改。最明显的是,EIP1559之后,交易的格式的已经大不一样。因此,我基于上述教程,依据最新的go-ethereum(v1.10.26)对代码demo进行了修改。 用golang开发以太坊的一个好处是,可以很方便的查看和调试geth的源码,可以帮助我们更深入地理解以太坊的底层实现。 代码库为 https://github.com/CryptoRbtree/goeth-client 下面对主要功能做简单介绍。1 账户首先需要调用ethclient.DialContext连接一个rpc,这个rpc可以是外部服务商提供的公链rpc,也可以是本地区块链的。var ( ctx = context.Background() url = "https://eth-mainnet.g.alchemy.com/v2/" + os.Getenv("ALCHEMY_ID") client, err = ethclie...
以太坊上的几种签名: eth_sign, personal_sign, eth_signTypedData
以太坊的签名算法是ECDSA-secp256k1,以下介绍的每一种签名都是基于该算法,只是用来签名的数据不同。1 交易签名 eth_sign以太坊上,签名之前的交易结构如下。let transaction = { to: '0x70997970C51812dc3A010C7d01b50e0d17dc79C8', value: ethers.utils.parseEther('1'), data: '0xE0A293E08F72454CEd99E1769c3ebd21fD2C20a1', gasLimit: '22000', maxFeePerGas: ethers.utils.parseUnits('20', 'gwei'), maxPriorityFeePerGas: ethers.utils.parseUnits('5', 'gwei'), nonce: 1, type: 2, chainId: chainId, // 31337 } 各项目的含义不再介绍,有兴趣可以查阅https://ethereum.org/en/developers/docs/transactions/...
Solidity学习-可升级合约(Transparent/UUPS/Beacon)
以太坊合约原生并不支持升级,目前的升级一般是采用代理模式实现的。代理模式在代理模式中,有2个合约:Proxy和Implementation,用户总是和Proxy进行交互。Proxy在收到用户的调用请求后,并不执行自身的代码,而是通过delegatecall去执行Implementation合约的代码。delegatecall的特殊之处就是,它并不切换上下文,因此Implementation的代码所处理的存储空间是Proxy合约的存储空间,而非自己的。 Proxy合约里存储了Implementation合约的地址,这个地址是可修改的,当我们需要进行合约升级的时候,只需要重新部署一个新的Implementation合约,同时把Proxy合约中存储的地址改成新合约的地址就行了。升级前后,合约的存储空间没有任何变化(依然是Proxy的存储空间),地址也没有变化(依然是Proxy的地址),因此升级过程对用户完全透明。 合约升级之后,要保证storage变量的兼容性。新版本可以在旧版本的变量之后增加新的变量,但是不可以删除或者修改旧版本的变量。因为自始自终,变量都只存储在Proxy合约里,升...
用golang开发ethereum
之前看到一个用golang开发以太坊的教程 https://goethereumbook.org/zh/ 这个教程非常详细,然而它太陈旧了,目前很多go-ethereum函数接口已经有所修改。最明显的是,EIP1559之后,交易的格式的已经大不一样。因此,我基于上述教程,依据最新的go-ethereum(v1.10.26)对代码demo进行了修改。 用golang开发以太坊的一个好处是,可以很方便的查看和调试geth的源码,可以帮助我们更深入地理解以太坊的底层实现。 代码库为 https://github.com/CryptoRbtree/goeth-client 下面对主要功能做简单介绍。1 账户首先需要调用ethclient.DialContext连接一个rpc,这个rpc可以是外部服务商提供的公链rpc,也可以是本地区块链的。var ( ctx = context.Background() url = "https://eth-mainnet.g.alchemy.com/v2/" + os.Getenv("ALCHEMY_ID") client, err = ethclie...
Subscribe to rbtree
Subscribe to rbtree
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
把b链上的鞋子数据扒了一下。
方法:链上遍历查tokenURI,访问tokenURI拉出鞋子属性数据。有些tokenURI访问之后没有数据,可能是鞋子已经销毁或者是官方不给看。 暂时找到了1551双创世鞋,其中大部分是10000-11999,18双是19000-19999之间的抽奖鞋。


分享一些有意思的发现:
1.总共找到1551双鞋。b链创世鞋当然不止这些,没找到的可能是还没有从账户里转出过,不过分析一下比例或许也有一定的参考价值。 1551双鞋子里,还有将近10%处于鞋盒状态。

2. 目前我只扒了链上前1万多双鞋子的数据(链上总共10万多),还没有发现被增强的创世鞋。但我发现了一双市场上已经被增强的创世鞋#11930,链上找到的是它增强之前的样子。


看来鞋子增强之后,并不会修改编号最小的鞋子的数据,而是会重新mint一双鞋。当然应该还是要转到自己钱包才会触发链上mint。我也找到了一个这样的例证:


3. 在我找到的创世鞋里,Walker的比例达到了一半,绿鞋和灰鞋的各鞋型占比相近,估计这反映了官方设定的初始比例。这也解释了我在上一篇分析各种鞋型比例的文章中的困惑:为什么Walker鞋那么多、Runner鞋那么少。


https://mirror.xyz/rbtree.eth/ID18YaISwi_zQUOYaUOOX3VET-imOcluVlnVHUBP6w4
4. 发现了5双编号奇怪的亚瑟士~ 可能是测试用鞋

另外,如果想自己看链上的bsc鞋子,建议大家用nftscan,这里甚至有一些我自己从链上找不到的数据,估计是因为网站有自己的缓存,在之前可以查询的时候记录了下来。
https://bnb.nftscan.com/0x69d60ad11feb699fe5feeeb16ac691df090bfd50
把b链上的鞋子数据扒了一下。
方法:链上遍历查tokenURI,访问tokenURI拉出鞋子属性数据。有些tokenURI访问之后没有数据,可能是鞋子已经销毁或者是官方不给看。 暂时找到了1551双创世鞋,其中大部分是10000-11999,18双是19000-19999之间的抽奖鞋。


分享一些有意思的发现:
1.总共找到1551双鞋。b链创世鞋当然不止这些,没找到的可能是还没有从账户里转出过,不过分析一下比例或许也有一定的参考价值。 1551双鞋子里,还有将近10%处于鞋盒状态。

2. 目前我只扒了链上前1万多双鞋子的数据(链上总共10万多),还没有发现被增强的创世鞋。但我发现了一双市场上已经被增强的创世鞋#11930,链上找到的是它增强之前的样子。


看来鞋子增强之后,并不会修改编号最小的鞋子的数据,而是会重新mint一双鞋。当然应该还是要转到自己钱包才会触发链上mint。我也找到了一个这样的例证:


3. 在我找到的创世鞋里,Walker的比例达到了一半,绿鞋和灰鞋的各鞋型占比相近,估计这反映了官方设定的初始比例。这也解释了我在上一篇分析各种鞋型比例的文章中的困惑:为什么Walker鞋那么多、Runner鞋那么少。


https://mirror.xyz/rbtree.eth/ID18YaISwi_zQUOYaUOOX3VET-imOcluVlnVHUBP6w4
4. 发现了5双编号奇怪的亚瑟士~ 可能是测试用鞋

另外,如果想自己看链上的bsc鞋子,建议大家用nftscan,这里甚至有一些我自己从链上找不到的数据,估计是因为网站有自己的缓存,在之前可以查询的时候记录了下来。
https://bnb.nftscan.com/0x69d60ad11feb699fe5feeeb16ac691df090bfd50
No activity yet