想必很多同学都已经使用过ERC20 创建过代币,或许已经被老板要求在ERC20代币上实现一些附加功能搞的焦头烂额,如果还有选择,一定要选择 ERC777 。
这篇文章是对ERC777 功能型代币(通证)最佳实践 的一个补充,如果你仅仅是要实现一个自己的 ERC777 代币, 那么阅读另一篇就够了, 如果想对ERC777进行一些自己的定制,那么就有需要对源码有理解。
如何区分合约地址还是普通账号地址?
Etherscan 是以太坊上应用最广泛的区块链浏览器,也提供 API 服务。 我们知道以太坊节点提供的API功能有限,尤其是需要一些多个区块相关的数据时,必须要依靠Etherscan API这样的服务。
Etherscan API是社区提供的服务,仅支持每秒 5 个GET或POST请求,可以在这个地址 API-Keys 申请一个Key。
在区块链上,由于一切信息都是透明公开的,提供一个安全实用的随机数是一个非常困难的问题。但是随机数是很多应用的基础,比如游戏,博彩,流程控制等。因此,提供一个实用可靠的随机数是基于智能合约的应用的迫切需求。
ethers.js 库是为以太坊 提供的一个的小而完整的 JavaScript 库。
ethers.js库旨在为以太坊区块链及其生态系统提供一个小而完整的 JavaScript API 库 它最初是与 ethers.io 一起使用,现在已经扩展为更通用的库。
区块链钱包作为数字货币世界的入口,它糟糕的体验把大部分人挡在门外,说的就是你:助记词备份(或私钥备份)。 现在一个激动人心的签名方案让体验提升一大步,也是博客的主角:门限签名技术(Threshold signatures: 也可翻译为阈值签名)及ZenGo钱包。
ZenGo钱包不需要备份助记词,交易也不需要输入密码,一切只需要FaceID/TouchID。
智能合约的地址什么时候有效? 在构造函数中可以使用this吗?
由于以太坊又慢又贵的POW共识(尽管如此,以太坊依旧是最受欢迎的DApp平台),催生了各种以太坊侧链的方案用来减少以太主网的拥塞,前面我们介绍了Loom SDK, 这篇博客介绍下POA Network以及xDai。 如果大家想稳定的数字货币做一些智能合约应用,在Libra还没有上线之前,也许你可以尝试一下xDai。
Libra
中采用的椭圆曲线是ED25519
,而不是像以太坊比特币使用的是secp256k1
. 虽然有不同,但是从本质上来说他们都是椭圆曲线,基本性质都是完全相同的.因此适用于S256
曲线的VRF算法在Libra
中也是相通的.
Solidity 中很多Hash函数, 如:keccak256 等需要bytes作为一个参数,这个时候有时需要把uint转化为bytes 。
本文主要是通过对架构设计、承兑型资产铸造、转移和销毁这几个层面进行了详细的理论和实现的分析。
内存池mempool模块解读第三篇,这部分我主要研究mempool中的节点间Tx同步. 关键代码都位于shared_mempool.rs
中.
mempool模块对于Tx的管理核心全部集中在TransactionStore
这个结构,他对外对接的是CoreMemPool
结构.
从TransactionStore
可以清楚看出缓冲池中Tx增删改查的逻辑.
作为缓冲池,我们先大致说一下这几个功能要考虑的问题.
Libra 内存池(Mempool)模块主要用于缓存未打包的合法交易,该模块和比特币,以太坊源码中的TxPool功能等价,只要包含两个功能:
因为Libra使用的是不会分叉的PBFT共识,所以缓冲池的实现以及管理要简单许多.
根据Libra的架构图,准入控制模块(AC:admission control,本文中简称AC模块)是位于验证器(Validator)与普通用户交互的入口。
这篇文章目的是打通Libra CLI 命令行工具与底层数据库模块libradb之间的关系 Libra Cli
指的是 Libra上的第一笔交易 中提到的命令行工具。 libradb
指的是storage/libradb
模块 。
Libra数据存储使用的RocksDB这个KV数据库.并且Libra存储和以太坊基本上思路是一样的,就是一个MPT树来保存Libra这个超级状态机.
因为RocksDB中除了KV以外,还存在着ColumnFamilyName这一项,这个用起来有点像Bucket.