区块链
crystal---
心之所向,素履以往。
生如逆旅,一苇以航。
展开
-
实现以太坊的数据结构----状态树
状态树:实现账户地址(addr)到账户状态(state)的映射。在以太坊中账户地址用160位(bits)表示,即40个16进制的数。1、为什么不能使用哈希表实现?用哈希表实现,就是系统中的全节点维护一个哈希表,在不考虑哈希碰撞的情况下,每次有一个新的账户就插入到哈希表中,查询也是常数级的。但是这存在一个问题。如果要证明账户余额,需要将哈希表中的内容组织成一个Merkle tree,然后算出根哈希值保存在block header中公布出去,只要保证根哈希值是正确的,就能保证底下的数没有被篡改。原创 2020-07-08 19:15:40 · 959 阅读 · 1 评论 -
python实现区块链
区块结构:# 区块结构class Block: ''' pre_hash:父区块哈希值 transaction:交易列表 timestamp:区块创建时间 hash:区块哈希值 nonce:随机值 ''' def __init__(self, transaction, pre_hash): # 将传入的父区块的哈希值和数据保存到类变量中 self.pre_hash = pre_hash原创 2020-07-04 11:54:49 · 5461 阅读 · 1 评论 -
区块链中的密码学
密码学包括经典密码学和现代密码学,经典密码主要研究对称密码,现代密码学是非对称密码学。在区块链中使用了较多的非对称加密算法,比较有名的是比特币中使用的椭圆曲线密码学(Elliptic Curve Cryptography,简称ECC),在比特币中,利用椭圆曲线密码学生成私钥、公钥和数字签名。椭圆曲线密码学的主要优势:比其他方法使用更小的密钥。小的密钥便于网络传输,所以在对带宽要求比较高的场景中十分有用。 可以定义群之间的双向性映射椭圆曲线加密码算法原理:https://www.jianshu转载 2020-07-03 13:38:07 · 1024 阅读 · 0 评论