
区块链
文章平均质量分 76
csds319
这个作者很懒,什么都没留下…
展开
-
数字货币DCEP
上周新闻提到了区块链技术,号召大家学习和利用区块链技术。然后数字货币DCEP就浮出了水面,那么这个DCEP是什么呢,我根据自己的经验介绍下,如有不对请指正。DCEP是什么DCEP是Digital Currency Electronic Payment的缩写,从字面意思理解是数字支付,那就是数字货币。DCEP跟区块链的关系DCEP用的不是区块链技术,只是用到了区块链的灵魂吧(姑且...原创 2019-11-02 19:00:39 · 2096 阅读 · 0 评论 -
Tendermint之BFT共识
https://blog.youkuaiyun.com/simple_the_best/article/details/77198837这篇文章的这张图把Tendermint的共识描述的差不多了:1 Propose(r)生成区块广播,所有validator收到Block后,Prevote Block2 节点收到2/3的prevote后,继续Precommit Block3 节点收到2/3的...原创 2018-07-23 16:57:22 · 1139 阅读 · 0 评论 -
Viper使用简介-基于Tendermint
Tendermint需要配置一些属性的时候是在config.toml中配置的,刚开始没看明白toml配置文件是如何生效的,深入了解了一下做个记录。原来tnedermint使用了viper(ˈvaɪpə(r),现在看到i都得确认下发什么音)开源项目,那么viper是什么呢看下github的解释:https://github.com/spf13/viperViper is a compl...原创 2018-07-18 16:55:29 · 4054 阅读 · 0 评论 -
由Vite读音引发的英语颠覆
前段时间出了个项目Vite,被读成原创 2018-07-06 10:47:00 · 1389 阅读 · 1 评论 -
Viper的兄弟Cobra
Tendermint也使用了Cobra工具,Cobra跟Viper是兄弟关系的,都是spf13下面的项目,摘下github上的描述(spf13何许人也,这么牛逼,写了这么多开源工具。看了下简介应该是google golang团队的大牛,这些工具也都是基于go语言开发的)https://github.com/spf13/cobraCobra is a library providi...原创 2018-07-19 15:19:47 · 1344 阅读 · 0 评论 -
以太坊发布合约、调用合约
需要几个工具MetaMask一个轻钱包,至于如何安装网上一大把教程,我安装的是Chrome插件,安装好之后可以看到一个小狐狸的图标,然后点开:这张图我已经创建了一个账号,可以根据网上的guide来创建一个自己的账号,然后保存好私钥remixsolidity IDE工具,可以用来编写合约、发布合约。它是连接MetaMask一起工作的以太坊测试网络直接在主网部署合约和调...原创 2018-07-26 14:00:26 · 8159 阅读 · 0 评论 -
区块链扩容机制总结
比特币和以太坊作为区块链1.0和2.0的代表,但是TPS却少的可怜,比特币是7TPS,以太坊是15TPS,作为中心化的代表,淘宝在17年双十一超过了200,000TPS,可见去中心化的TPS还有很大的差距需要提升有人说区块链生来就不是为了高TPS,去中心化就意味着TPS的降低。但是如果基于去中心化还能有高TPS,就可以有很大的想象空间,相信基于区块链的应用也会蓬勃发展 基于区块链去中心...原创 2018-08-05 22:41:09 · 1743 阅读 · 1 评论 -
区块链在药品领域的应用是否可行
随着区块链的火爆,很多领域也都引入了区块链的概念,比如医药领域也宣称引入区块链解决假药问题对此我是有疑问的:1 医药领域有必要引入区块链吗2 引入区块链能解决假药问题吗其实归根结底就一个问题,是否能解决假药问题,如果真能解决,那么引入区块链就有必要假药问题的产生首先我们来了解一下假药是怎么来的,我认为有两种途径1 正规药企因为利益问题生产假药比如前段时间比较火的长生...原创 2018-09-05 17:02:26 · 1421 阅读 · 1 评论 -
Tendermint之共识逻辑
图示流程描述Validators:所有参与共识的节点Proposer:出块节点以高度n,round 0共识为例1 所有的Validators在New Height(高度n,round 0)处等待开始,timeout或者tx到来的时候进入Propose阶段2 Propose阶段Proposer打包区块,并广播给其他Validators,然后进入Prevote阶段其...原创 2018-11-09 13:26:24 · 581 阅读 · 3 评论 -
升级Tendermint
项目中用Tendermint做共识,发展到了一定阶段,想着要升级下Tendermint,虽然现在也能用,但是最好跟着官方的步伐, 跟之前Android升级一个道理。之前我们使用的是0.15的版本,目前最新的稳定release是0.28,直接把我们使用的tendermint换成最新的,然后解决编译问题。费尽的解决一大堆编译问题,有一个涉及到app的改动不太好改,就直接倒回到0.23版本没有改...原创 2019-02-02 19:34:22 · 517 阅读 · 0 评论 -
Tendermint之Prometheus
好久没写文章了,一则是区块链凉凉了要,二则是一直在码代码实现一些东西,也没什么可写的(只是借口。。。中间发生的一些事情都可以写了,比如以太坊升级以及重入攻击等),还是需要坚持输出。最近项目功能实现的差不多了,要考虑升级下Tendermint了,我们用的版本比较老,要跟上Tendermint的步伐才好。升级过程还算顺利,主要也只是abci的改动,再合入自己的改动即可。升级后改动也不算大,...原创 2019-01-30 11:18:55 · 433 阅读 · 0 评论 -
web3获取以太坊合约内public变量值
最近做侧链项目中需要把合约内的decimals、name和symbol传到侧链,需要根据合约address获取到这三个值,研究了一下怎么获取,记录一下。获取合约内值有两种方法, 一种是本地call,另外一种是sendTransaction,前者不需要耗费gas,后者需要上链耗费gas,我们使用的场景是本地调用,所以只写前一种。准备条件1 合约abi需要合约源码, 写一个简单的合约:...原创 2019-02-27 13:43:13 · 4055 阅读 · 0 评论 -
Merkle Path验证
https://github.com/adamchen0510/merkletree.git请参考上述git,在一个base git基础上添加了获取merkle path。merkle path的作用是给定一个叶子节点和叶子节点的merkle path和root,可以验证叶子节点在这个merkle tree中,作为存在性证明,在区块链里用于验证某个交易是否存在。以上图为例,有四个交...原创 2019-03-12 11:51:33 · 1015 阅读 · 0 评论 -
零知识证明zkSNARK
最近接触学习零知识证明,很是头疼,没有一些背景知识,只能硬看了,而且也没有别的好方法。为什么要学习零知识证明因为区块链的去中心化,导致信息都是公开透明的,比特币、以太坊、EOS等目前绝大部分项目区块链上的交易都是公开的:发送者的地址、金额、接收者的地址等,虽然这个还是匿名的,但是除了匿名之外,其他的信息都是可以被跟踪的,无法达到隐私的目的,如果有人知道了你的地址,那么你的交易记录和资产就完...原创 2019-05-17 16:37:41 · 787 阅读 · 0 评论 -
Tendermint共识之Validator
Tendermint本身是BFT+POS共识,CMT使用的时候改成了DPOS,但是无妨,Tendermint本身的ABCI接口已经定义好,至于具体实现成POS还是DPOS app层定义逻辑就好了这里有两个概念区分一下:validator:所有参与共识验证的节点proposer:出块节点,validator中选出来的出块节点初始Validator是设置在genesis.json文...原创 2018-07-23 11:15:18 · 1160 阅读 · 0 评论 -
Tendermint之go-wire
在基于Tendermint增加一个已有rpc接口参数的时候,是考虑增加接口还是扩张接口,这两者都比较麻烦增加接口的话扩展性不强扩展接口的话也比较麻烦,一整套接口都得改,而且后续扩展性不强想着在数据的前面加一个byte代表类型,接收方去获取第一个byte判断类型后续为数据,但是这样有点赤裸裸的workaround的感觉了,看到已有的go-wire有类似效果,就是这个想法上的包装,所以看看怎么使用的g...原创 2018-07-04 19:58:26 · 621 阅读 · 0 评论 -
以太坊之LevelDB源码分析
最近研究以太坊的LevelDB使用,看了看代码,大致介绍下使用流程(网上介绍的leveldb大多是c++版本的,以太坊使用的是go语言版本的),我使用的是mac book开发环境。介绍中会忽略一些细节,如有重要遗漏或者错误欢迎指出。读此篇文章默认leveldb的基本知识都了解,可以参见我的另外一篇文章介绍https://blog.youkuaiyun.com/csds319/article/details/8...原创 2018-05-18 16:25:34 · 5700 阅读 · 0 评论 -
LevelDB介绍-随笔
最近在看区块链代码的时候对LevelDB有点兴趣,所以了解了一下,这篇文章写的挺好的,可以看看https://blog.youkuaiyun.com/linuxheik/article/details/52768223LevelDB是google开源的KV(key-value,存储的数据都是kv的形式)单机数据库,官方版本是C++,比特币使用的是c++版本: https://github.com/goo...原创 2018-05-16 10:38:50 · 758 阅读 · 0 评论 -
Skiplist简介
看了这篇文章大概知道了skiplist的原理https://blog.youkuaiyun.com/ict2014/article/details/17394259/Skiplist首先是有序存储的,然后每个节点的后续节点数是random的(至少为2)这样的结构查找效率会比较高,单链表的查询效率为O(n),Skiplist是O(logN),后续看代码(代码不知道什么时候看了。。。)...原创 2018-05-16 21:20:15 · 430 阅读 · 0 评论 -
以太坊 构造函数 codecopy
最近研究以太坊的时候同事讨论了一个问题,智能合约的构造函数是如何保证只执行一次的,记录一下。智能合约在第一次执行的时候调用的是EVM的create函数,看代码// Create creates a new contract using code as deployment code.func (evm *EVM) Create(caller ContractRef, code []byte, g...原创 2018-05-24 15:45:21 · 745 阅读 · 0 评论 -
以太坊初始化
闲来搞张图记录下,免得忘记了用ProcessOn画的,有的本来没有换行什么的,存下来就换行了有点乱。。。原创 2018-06-12 21:35:43 · 607 阅读 · 0 评论 -
以太坊之Fetcher(收到BlockHash的处理)
以太坊节点广播block的时候一部分节点广播整个block内容,其余节点广播block的hash,本篇分析一下节点收到block hash后的处理eth/handler.go中收到NewBlockHashesMsg消息,看代码的处理:case msg.Code == NewBlockHashesMsg: var announces newBlockHashesData if err...原创 2018-06-06 15:46:31 · 2467 阅读 · 0 评论 -
以太坊之Downloader同步区块流程
随着以太坊的数据越来越多,同步也越来越慢,使用full sync mode同步的话恐怕得一两个礼拜也不见得能同步完。以太坊有fast sync mode,找了些文章还不是很明白具体内容,所以尝试着看懂写下来,如有错误之处欢迎指正。关于fast sync mode的算法,是在这篇文章中讲述的,看完了也没看明白为什么同步的数据会少,速度会快,所以看看源代码的实现吧https://github.com/...原创 2018-05-31 19:15:47 · 6846 阅读 · 12 评论 -
以太坊之工作流程(同步完数据之后)
这篇跟上一篇的区别是同步数据完成之后,以太坊的工作流程是怎样的初始化eth/handler.gofunc (pm *ProtocolManager) Start(maxPeers int) { pm.maxPeers = maxPeers // broadcast transactions pm.txCh = make(chan core.TxPreEvent, txChanSize) ...原创 2018-05-31 20:38:47 · 2618 阅读 · 0 评论 -
以太坊叔块相关
什么是叔块叔块是以太坊引进的,顾名思义叔块就是跟自己的父区块指向的父区块相同。当矿工打包的时候发现有这样的块存在,就把它打包进去。那么这个块就是当前块的叔叔了,就称为叔块,这个起名还是蛮有意思的。如上图说是,当打包102的时候,发现还有个黄色的101也指向自己自己(102)的爷爷,那么黄色的101就是一个区块(当然这个是最高级别的叔块,如果打包102的时候还没有黄色的101,打包103的时候才发现...原创 2018-06-08 11:44:06 · 5081 阅读 · 0 评论 -
Tendermint同步区块
最近在学习Tendermint的代码,记录下同步区块的流程,直接跳过P2P阶段,后续再写一篇文章记录P2P流程吧blockchain/pool.go的OnStart()新建了gorountine来发起请求func (pool *BlockPool) OnStart() error { go pool.makeRequestersRoutine() pool.startTime = time.N...原创 2018-06-20 11:23:44 · 1201 阅读 · 0 评论 -
Tendermint之不分叉
比特币和以太坊都是会分叉的,比特币造成分叉后,非主链的出块节点没有任何收益,以太坊引入了叔块的概念,分叉后非主链的区块被认为是叔块,给予一部分奖励Tendermint号称不分叉,那么它是如何做到的呢。Tendermint是POS+BFT共识https://www.jianshu.com/p/763264fa3bef看了这篇文章刚开始没明白,后面想了一下记录一下:Assume that at mos...原创 2018-06-26 23:38:12 · 847 阅读 · 0 评论 -
Tendermint之P2P
P2P在区块链中是最基础的角色,它负责把节点带入网络、消息传递,驱动整个网络正常运转。之前有介绍比特币和以太坊的P2P模块,那么Tendermint的P2P是怎样的呢P2P连入网络需要seed,比特币和以太网坊是写在代码里的,tendermint需要参数传递,可能从官网或者什么地方可以拿到。节点连接分为inbound和outboundinbound的意思是别的节点连入自己outbound的意思是自...原创 2018-06-27 09:54:06 · 1493 阅读 · 0 评论 -
分析智能合约漏洞
前几天又爆出新合约漏洞,可以查看着篇文章观看详细内容:https://mp.weixin.qq.com/s/MNXXdKmjqRLng53noP10ig因为之前没写过智能合约,没看明白为什么会出问题,请教了同事才了解清楚图1如上图所示,出现问题的是81行,但是为什么这句话会导致出现问题,allowed又是什么呢allowed是账户持有者调用approve后的结果,看下approve函数的代码图2如...原创 2018-07-09 19:38:20 · 2681 阅读 · 5 评论 -
阅读etherscan上所有的合约转账代码
自从出了智能合约溢出攻击事件之后,大家纷纷讨论发现了智能合约漏洞了之后怎么自由之类的,整天意淫着能找到一个合约漏洞自此自由后逍遥人间。。。当然这只是玩笑了,玩笑之余,想着看看众多合约中是否还有漏洞。当然如果真有漏洞基本上已经被黑客默默的利用了(或者等待机会利用),等我来发现黄花菜都凉了去了。怎么分析呢,想着从etherscan上看一个个合约代码吧,笨办法来搞吧。刚开始是找了一个小交易所,然后一个个...原创 2018-07-09 19:39:01 · 1869 阅读 · 3 评论 -
以太坊之P2P
最近研究以太坊代码中的P2P通信,记录一下以太坊使用的是Kad(Kademlia)协议,BT和电驴都曾使用的协议,关于Kad协议,可以参看介绍:https://github.com/ZtesoftCS/go-ethereum-code-analysis/blob/master/references/Kademlia%E5%8D%8F%E8%AE%AE%E5%8E%9F%E7%90%86%E7%AE...原创 2018-05-17 19:53:20 · 1190 阅读 · 0 评论