区块链
文章平均质量分 59
寄意兰州
书山有路勤为径,学海无涯苦作舟。
展开
-
MAP开源协议的网络部分
通用的区块链节点通讯协议 现有的区块链底层节点发现以及数据传输算法是不互通的,比特币的节点是无法直接和以太坊的节点通过p2p节点发现算法找到彼此并建立TCP连接的。但是,我们的MAP协议需要所有的区块链P2P网络可以相互沟通,因此,我们需要一个统一的标准化的p2p通讯协议。而ProtocolLab提出的libp2p协议正好可以满足我们的需求,libp2p是一个以p2p网络构建的基础模块。它高度抽象了主流的传输协议,使得应用层构建时完全不必关心底层的具体实现最终实现跨环境,跨协议的p2p节点互联。目前原创 2020-09-09 14:51:39 · 605 阅读 · 0 评论 -
V神支持truechain拥抱Layer 2,为DeFi生态提供计算
目前DeFi生态很热,以太坊GAS费长期高居不下,动辄上百元的转账费让人生畏。这边风景独好,那边在18年公链竞赛中的以太坊杀手纷纷落莫。号称高TPS却无人问津就如同现实生活中都知道宝马而知道宝来的却很少。truechain经过了一系列迭代后充分认识到了这个问题,只有立足于解决以太坊上存在的问题才能发展。 在经过长时间的调研推出了新的路线图,将全新设计Optimistic RollUP,在服务true主网正常业务的同时全面拥抱以太坊Layer 2,为2层带来基于混合共识的安全保证和超高...原创 2020-09-03 15:25:14 · 588 阅读 · 1 评论 -
go实现Uniswap本地部署和节点部署
go实现Uniswap本地测试和节点部署前段时段用remix部署uniswap,步骤挺繁琐而且remix占用内存较大,很容易崩溃,并且不能自动化部署,网上js调用合约的很多,go的却很少,自己动手写了一个当练手了。Go的优势本地可构造链,不需要找水龙头获取测试币无需找RPC节点debug测试方便,其实也很挺麻烦的编译sol生成Go文件可能麻烦点部署流程总共需要发起6笔合约交易。部署WETH合约代币合约Uniswap工厂合约Uniswap RouterV2合约代币合约授予A原创 2020-08-31 10:10:57 · 1310 阅读 · 0 评论 -
基于以太坊的秘钥管理服务
之前做了一个秘钥管理工具,整理下方便以后查询功能点服务端RPC API 5种方法注册派生更新dapp更新账户查看账户信息Ecsda加密临时会话HD派生账户多Root管理员Root管理多DappDapp管理多账户访问日志管理LevelDb存储私钥管理客户端RPC 签名交易临时Ecsda公钥加密多次签名AES加密服务端注册./main --key key --rpcport 8985 --root "0x0EB4d5C43e894B42aaE58D.原创 2020-08-07 11:20:30 · 608 阅读 · 1 评论 -
以太坊网络爬虫,让区块链不在神秘
之前一直听说黑客RPC盗币,觉得挺有意思的,最近也体验了一下。这个Bug最新版的geth客户端已经没有,Http调用解锁账户早已被禁掉,以太坊Holder不需要担心。写这篇文章是想让区块链充满趣味性,不再是核心开发者中晦涩的代码,给区块链培训机构提供些建议,不要整天讲demo。目前以太坊网络中夹杂着很多其他链的节点信息,由于很多公链基于以太坊二次开发,没有修改p2p参数,导致节点信息污染了真实的以太坊节点。通过devp2p节点发现拿到的节点数据,通过查询network ID,有很大一部分不属于以太坊网.原创 2020-08-03 18:51:14 · 1218 阅读 · 0 评论 -
Rust基本语法整理(三)
通道的发送端有一个 send 方法用来获取需要放入通道的值。send 方法返回一个 Result<T, E> 类型,所以如果接收端已经被丢弃了,将没有发送值的目标,所以发送操作会返回错误。在这个例子中,出错的时候调用 unwrap 产生 panicrecv,它是 receive 的缩写。这个方法会阻塞主线程执行直到从通道中接收一个值。一旦发送了一个值,recv 会在一个 Result<T, E> 中返回它。当通道发送端关闭,recv 会返回一个错误表明不会再有新的值到来了try_原创 2020-07-25 16:07:57 · 874 阅读 · 0 评论 -
在以太坊上如何实现联盟链
搞了两三个月联盟链,基本上算是告一段落,大概梳理下所做的东西,希望能对要做联盟链的人有所帮助。在写这篇文章前,简单介绍下联盟链的功能。国密和国际算法切换参数toml配置有币无币支持gmsslp2p的证书准入委员会成员更新solc编译器tendermint共识权限准入交易校验rpc api状态存储系统合约加密算法国密和S256,P256支持国密sm2,sm3,sm4,国际的支持p256,比特币和以太坊都使用的s256.刚开始做的时候计算支持p256和国密,因为go .原创 2020-07-23 23:04:02 · 1929 阅读 · 2 评论 -
FileCoin启动Lotus本地测试网
启动本地Devnet测试本地环境为mac在调试模式下构建Lotus二进制程序,这可以使用2048个字节的扇区大小来启动本地网络。make 2k执行结果如下rm -f lotusgo build -ldflags="-X=github.com/filecoin-project/lotus/build.CurrentCommit=+git.c4de2373.dirty" -tags=2k -o lotus ./cmd/lotusgo run github.com/GeertJohan/go原创 2020-07-19 22:00:14 · 2485 阅读 · 1 评论 -
区块链的几大模块
共识的分类POWPOW的一般理解根据难度做SHA256哈希运算, 不停寻找Nonce特定的HASH 前导0的个数越多,代表难度越大优点是难于计算,一旦收到网络上的区块,能快速验证难度算法按高度动态调整,维持出块时间不变POW规范链POW易分叉,本地存储所有分叉区块CanonicalChain维护HASH和Number对应关系,标记最长链当收到区块难度比本地高时,会发生区块回退reorg,执行块的交易,状态更新POSPOS权益证明POW耗费电力,提高出块时原创 2020-07-11 11:59:13 · 1018 阅读 · 0 评论 -
白话区块链技术-区块链工程师大讲堂
本次大讲堂为清华大学互联网产业研究院制作的公益课程,内容分为八期,每月一期 , 分别从区块链基础,区块链实践,区块链底层主网开发,区块链 android/iOS 开发,前端基于 web3taijs 开发实践,服务端与链交互与安全,如何构造企业级区块链应用,区块链应用实战–存证等区块链的定义 区块链是借由密码学串接并保护的串联文字记录又称区块,每一个区块又包含前一个区块的加密散列,时间戳以及交易数据(通常是默克尔树Merkle tree),区块链技术所串接的分布式账本,记录两方有效交易,且可永久查验此.原创 2020-07-07 11:56:42 · 467 阅读 · 1 评论 -
泰岳链使用rust-libp2p实现节点同步(二)
在阅读本篇之前, 请先查看泰岳链使用rust-libp2p实现节点同步(一)新区块缓存同步的启动策略一般是当本地高度和对方节点上链高度相差一定高度常量,才会启动。想象一下,握手时对方高度是100,当你同步完这些区块时,对方节点已经到120了,对方发送的区块121,收到后是无法上链的,而同步高度常量是50,只能等到150才能再次启动同步。解决这个问题需要引入区块缓存。新区块gossip通知每产生一个区块,区块生产者都会通过gossip发送到订阅这个topic的节点,gossip为libp2p.原创 2020-06-19 20:02:40 · 558 阅读 · 0 评论 -
基于泰岳链实现Tendermint POS的细节 (二):换届
对于公有区块链来说,由于委员会成员会更迭,自然会有成员的退出和更新,本文介绍的是一种POS的实现,委员会之间的通信使用Tendermint,普通节点使用devp2p会存在两个p2p连接。这是基于上一篇基于以太坊实现Tendermint POS的细节 (一):选举写的,没看的可以了解下。PBFT Server初始化初始化本地配置端口IP私钥agent为Tendermint和应用协议的桥梁。func (s *Taiyuechain) startPbftServer() error { .原创 2020-06-12 16:44:25 · 259 阅读 · 0 评论 -
基于泰岳链实现Tendermint POS的细节 (一):选举
对于公有区块链来说,由于委员会成员会更迭,自然会有成员的退出和更新,本文介绍的是一种POS的实现选举成员的产生可以通过随机数生成如ETH2.0通过从POW矿工中寻找满足一定算力的成员 混合共识通过Balance质押量选择排行前20的成员获取委员会信息选举出了委员会成员后,一般只知道它的公钥,并不知道它的IP和端口,如何实现委员会成员之间的互联呢。//CommitteeNode contains main info of committee nodetype CommitteeNod.原创 2020-06-12 12:23:34 · 329 阅读 · 0 评论 -
Go调用以太坊合约和在测试用例中调用合约
首先使用npm下载solcnpm install -g solc这个主要是编译solidity文件生成对应的ABI和ABI BIN。如果使用这个需要到remix上面生成。pragma solidity ^0.6.0; library SafeMath { function sub(uint256 a, uint256 b) internal pure returns (...原创 2020-01-16 11:29:45 · 1764 阅读 · 2 评论 -
ETH2.0 Serenity中网络的详细介绍
以太坊第四阶段Serenity中网络的概述特别感谢Hsaio-Wei Wang、Kevin Mai-Hsuan Chia、John Adler的编辑和有价值的反馈。在分片区块链中网络是一个难题,我们如何把分片区块链设计和构建成可扩展的安全点对点网络?截至本文撰写之时,尚未有分片区块链系统部署在生产中,因此,我们在如何设计此类P2P网络方面没有先例。这是目前以太坊2.0面临的一个设计问题。这...翻译 2019-11-21 17:33:13 · 482 阅读 · 0 评论 -
读区块和交易,合约和虚拟机 笔记
读文章第二遍大致笔记, [以太坊源代码分析] I.区块和交易,合约和虚拟机tx 的转帐转出方地址确实没有如转入方一样被显式的声明出来,而是被加密隐藏起来了,在Ethereum里这个转出方地址是机密,不能直接暴露。这个对tx加密的环节,在Ethereum里被称为签名(signEthereum 里用stateObject来表示一个账户Account,这个账户可转帐(transfer value...原创 2018-07-26 11:14:21 · 269 阅读 · 0 评论 -
读 数据的呈现和组织,缓存和更新 笔记
能理解的简单记了一下若以Block作切割,那么Transaction和Contract就是更小的粒度;所有交易或操作的结果,将以各个个体账户的状态(state)存在,账户的呈现形式是stateObject,所有账户的集合受StateDB管理Root:StateDB中的“state Trie”的根节点的RLP哈希值。Block中,每个账户以stateObject对象表示,账户以Address...原创 2018-07-26 16:04:21 · 416 阅读 · 0 评论 -
以太坊源码解读 资料整理
github上面最全的以太坊源码解读https://github.com/ZtesoftCS/go-ethereum-code-analysis写的比较专业,p2p相关的有点少https://blog.csdn.net/teaspring https://blog.csdn.net/turkeycock写network中fetcher写的不错,download有点含糊h...原创 2018-08-01 10:45:57 · 309 阅读 · 0 评论 -
以太坊节点发现协议 DEVP2P V5
节点发现协议v5欢迎使用节点发现协议v5规范!请注意,本规范正在进行中,可能会在未事先通知的情况下发生不兼容的更改。节点发现是在对等网络中查找其他参与者的系统。该系统可以被任何节点使用,用于任何目的,除了运行网络协议和存储有限数量的其他节点的记录外,无需任何费用。任何节点都可以用作网络的入口点。该系统的设计灵感来源于Kademlia DHT,但与大多数dht不同,它不存储任...翻译 2019-09-28 19:29:45 · 1184 阅读 · 0 评论 -
go语言实现链表
声明结构体//声明全局变量,保存头结点var head *Nodevar curr *Node//声明节点类型type Node struct { //数据域 Data string //地址域 NextNode *Node}//创建头结点func CreateHeadNode(data string) *Node { var node *Node = new(Node)...原创 2018-05-18 11:34:40 · 538 阅读 · 0 评论