转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
Kademlia:一种基于异或指标的P2P信息系统
概述
Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。使用一种基于异或指标的拓扑结构来路由查询和定位节点,这简化了算法并有助于证明。该拓扑结构有一个特点:每次消息交换都能够传递或强化有效信息。系统利用这些信息进行并发的异步查询,可以容忍节点故障,并且故障不会导致用户超时。
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
Kademlia是一种点对点分布式哈希表(DHT),它在容易出错的环境中也具有可证明的一致性和性能。使用一种基于异或指标的拓扑结构来路由查询和定位节点,这简化了算法并有助于证明。该拓扑结构有一个特点:每次消息交换都能够传递或强化有效信息。系统利用这些信息进行并发的异步查询,可以容忍节点故障,并且故障不会导致用户超时。
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
Raft
是一种被设计为通俗易懂的共识算法。它在容错和性能方面等价于Paxos
。不同之处在于它被分解为相对独立的子问题,并且它清楚解决了实际系统的各个所需部分。
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
这是康奈尔大学的一篇论文《Majority is not Enough: Bitcoin Mining is Vulnerable》,分析了简单多数原则在比特币挖矿中比较脆弱,分析指出并不需要51%算力才能实施有效攻击,而只需要1/3的算力就能够进行作恶。
在ethereum
代码中,在写入块和数据库的过程中,有避免这一漏洞的处理,参考了这篇论文,于是来详细看一看。
1 | // core/blockchain.go |
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
js console
中转账ETH
在我之前的文章《Ethereum初探》中,已经详述了在以太坊私链中转账的操作,可以在那里细细查看。
在探讨sendTransaction
转账流程之前,让我们先看下JS执行的通用流程。如下图所示。
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
new
一个账号1 | $ geth account new --datadir "./datadir1" |
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
Kerckhoffs
原理
Kerckhoffs
原理:即使除秘钥外的整个系统的一切都是公开的,这个密码体制也必须是安全的。尤其是即使攻击者知道系统的加密算法和解密算法,此系统也必须是安全的。
Auguste Kerckhoffs
于1883
年提出
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
HD Wallets
)在使用钱包,以及看以太坊代码时,都会碰到m/44'/60'/0'/0
这样奇怪的字符串,以及派生路径(DerivationPath
)这样的术语,决定搞个明白,随后发现这些奇怪的东西都与一个名词有关:分层确定性钱包
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
go-ethereum/eth
eth
包实现了以太坊协议(Ethereum protocol
)
Ethereum
定义在backend.go
中,可以看到Ethereum
结构体的定义,该对象实现了以太坊全节点服务。
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
go-ethereum/whisper
先从whipserv6
看起。
Whisper
定义Whisper
代表了在以太坊网络中的一个隐秘(dark
)通信接口,使用的是以太坊自有的P2P
通信层。所谓dark
,意思是没有可靠的方法可以来追踪数据包(见于Specs)
转载请注明出处:www.huamo.online
字节杭州 求贤若渴:
go-ethereum/accounts
accounts
包实现了高层的以太坊账号管理模块
首先看accounts.go
中的Account
结构体:Account
结构体描述了一个以太坊账号,可以定位到一个指定地址上,这个地址由结构体中的Account.URL
字段定义,Account.URL
字段是可选的。结构体中的另一个字段Account.Address
是必选的,该地址是由私钥衍生出来。