领wfc糖果

领wfc糖果

各种领wfc糖果的攻略,一起来薅羊毛
wfc矿机拍卖

wfc矿机拍卖

wificoin开源矿机
开源wificoin

开源wificoin

给开源wificoin项目打call

区块链如何影响新零售:从物流、供应链和终端交易谈起

区块链技术wangyin 发表了文章 • 0 个评论 • 137 次浏览 • 2018-03-22 16:02 • 来自相关话题

文 | 万德乾

零售老板内参独家专稿 未经许可不得转载

核心导读:

1.为什么区块链这么重要?

2.区块链对于零售业最大的影响是什么?

3.产消直通可能因为区块链而变为现实吗?

很多人刚刚解决“新零售是什么”,“区块链是什么”的问题又来了。

两者分别领衔了2017和2018开年的两大社会热点。 

为什么不说是行业热点,而要赋予其社会意义?在很多人看来,这是要改变社会状态的划时代浪潮。

虽然很多人依然对“区块链”(Blockchain)三个字,缺乏最起码的认知理解。

不过,《零售老板内参》APP(微信ID:lslb168)作为同步新零售大势的见证人,却要在此,试图探究新零售和区块链相结合的可能性。

毕竟,以前沿科技驱动零售业变革的当下,区块链不可能不对新零售有所影响。

什么是区块链

目前形成公认的意见中,认为区块链对新零售产生三个相对确定的技术赋能:优化供应链管理、商品溯源、消费者身份确认。 

其中,对现代物流的直接技术性加持,效果更为突出。 

详细分析区块链的具体加持路径之前,我们还是先回到大众更关心的问题:区块链是什么?

相对标准的区块链定义,将其叫做“分布式去中心化数据库”。显然,这10个字说了等于没说,大众需要一个更白话的解释,一看就懂。

相反的是,一个广为流传于朋友圈的图片段子,是这么调侃式介绍区块链的:

发生在中国最早的区块链项目,是四个矿工一组。其中一个矿工,能最先从144个随机数字中,碰撞出13个数字正确的哈希值,就可以获得一起记账权并得到激励。由于分布式记账需要得到其他几个矿工的共识,每次记账交易的时间,大约需要十几分钟。

这个区块链项目,就是——麻将。

段子归段子,不过段子也给了有关区块链不少关键词:矿工、哈希值(散列函数、Hash Function)、分布式记账、激励、共识。 

当然,大众还是没法直观的理解其逻辑构成,更奢谈与日常生活和一般人常识覆盖的社会范畴相挂钩。

相对正式的介绍则显得非常干涩难懂:区块链,是一串使用密码学方法相关联产生的数据块,每个数据块中包含了一次交易信息,用于验证信息的有效性(防伪)和生成下一个区块。具有共识、共防、分布式存储的三大特性。 

相对正式又不失活泼的介绍中,区块链的表述定义,则稍显容易。 

区块链,如同一串由36颗珍珠组合的珍珠项链,每颗珍珠都有对应的固定位置。当你拿走其中一颗珍珠,另外35颗珍珠的位置,都会发生变化,并以此类推。而你动过手脚的项链,同一批次,可能有10000串,这会导致每颗珍珠,都具有唯一性,不可更改,不可造假。 

得以确保每颗珍珠都具有唯一性和真实性的技术,就叫区块链。

总之一句话:“数据不能被更改”。 

区块链这套技术,可以表现在很多方面。比如大众最熟悉的比特币,以及新零售和物流(广义上,物流的一部分,又交叉重叠于新零售范畴)。 

是的,大众是先听到比特币,再听到区块链。比特币是区块链的一种(一种钱,或如同一款APP),而区块链是比特币的一种底层技术(一种记帐本,或如同Apple Store,应用商店)。

同理,将区块链和新零售作融合分析,结论就是:

区块链可以作为新零售的一种底层技术。而且,只是一种,不会代表新零售的全部。

区块链加持新零售

有一点值得特别注意,关于区块链的所有技术,其实早在比特币之前就有了。

为了用最直观的文字呈现区块链和新零售的关系,有关容易导致阅读理解的人和区块链生僻文字,包括:拜占庭共识算法(BFT)、以太坊(ETH)、智能合约、公有链等,这里一概不涉及。

回到前文,区块链的所有技术,已经存在很多年了。这套技术在全球大学的信息管理学中,多少有所涉及。也因为比特币,让区块链的各类技术集合起来,形成区块链的整套技术体系。 

就在区块链还未展现革命性颠覆互联网(Web)的能量之前,有关区块链技术应用在零售领域,已经有所涉及。而在区块链范畴向零售业的投入应用,也在类似阿里巴巴这些互联网巨头公司,有目的有计划的开展了。 

[]物流端应用[/]
最明显的落地应用,发生于物流领域。目前,全球已经成立一个“全球区块链货运联盟(BiTA)”,一家全球化的区块链教育和标准开发行业组织。目前已经吸引了包括通用电气运输集团、京东物流在内的230多家全球公司的加盟。 

就在3月初,沃尔玛向美国专利局成功申请一项专利,一个名叫“智能包裹(smart package)”的区块链技术,利用区块链技术完善更智能的包裹交付追踪系统。这个专利技术,还有一个记录包裹信息(比如包裹内容,环境条件,位置信息等)的设备。沃尔玛的这个技术,甚至还有一个基于区块链技术的无人机包裹寄送追踪系统。能实现包括卖家私人密钥地址,快递员私人密钥地址和买家私人密钥地址等,一系列用于监管配送地址的加密技术。

这方面,阿里巴巴物流服务商菜鸟网络也没闲着。2月底,菜鸟网络与天猫国际(天猫跨境电商平台)联合发布,基于区块链的防篡改的物流追踪数据。

消费者在手机淘宝的物流详情页面,可通过底端的“查看商品物流溯源信息”按钮,进入商品溯源页面。即可查看购买商品的全部溯源信息,确保商品来源真实可靠。

根据菜鸟国际技术负责人唐韧介绍,“区块链的最大特性就在于上传数据的不可篡改,通过商家、海关等各方上传的物流数据,消费者可以交叉认证自己购买商品的各项信息,想要在区块链上进行数据造假掺入假货,难度和登陆火星没什么区别。”

2.供应链端应用 

利用区块链技术构建“数字化供应链”,也是发生于零售业的一项延伸性技术创新,尤其是发生在全球跨境的供应链管理和流通。 

就像上文反复提到的那样,区块链技术有分布式记账功能,且不可篡改。这就从根本上杜绝供应链过程中,因为多环节的信息孤岛带来的不确定风险。比如各种贪腐风险。

这在跨境供应链管理上,还有更精妙的应用。利用区块链技术,商品的全球链路可追踪技术,会更加精准无误。分布式纪录让商品的全链路过程,从汇集生产、运输、通关、报检、第三方检验等信息,全部得到加密确证,不仅不可更改,每个流程还能清晰可追踪、可监控。

就像上文提到,区块链在纸张作业数字化之余,还能解决不同系统之间信息孤岛的不对称屏障,大大简化供应来环节的数据交换和作业流程。

湖畔大学教育长曾鸣就曾说,区块链对发生在国际贸易中的承兑汇票数字化,解决人工操作,数据交换速度和加密性,都具有革命性的影响。 

3.交易端应用 

因为是去中心化分布式数据库,区块链的点对点交易和私密性,可能对现有零售业的整个业务体系,存在颠覆性冲击。 

也就是说,从现有的“商品原产地(品牌商)——交易平台(零售商)——终端消费者”固有结构,直接跨过零售平台,达成从产地到终端的点对点交易。 

一种S2B2C交易模式。

既然区块链能查询到商品从源头、制作、出厂、上架销售所经历的所有历程。那么品牌商也能看到每件商品的流向,以及终端消费者的分布情况。 

从这个技术角度来说,品牌商是不是完全可以直接触达每一个精准又私密的终端消费者? 

理论上,完全可行。 

所谓产消直通(非产销),就是缩减消费者和生产者之间的信息距离。还让个性化定制、针对性服务变成可能。围绕在区块链这个自由、公开、安全加密的交易平台,传统零售平台中心连接消费者,完成商品最后交付的功能,很可能会被品牌商直接接管。 

当然,这肯定是没法预估时间的遥远未来。

全球顶级投行高盛,在2016年5月发表了首份《区块链——从理论走向实践》研究报告,详细分析了区块链在未来经济中所产生的价值。报告提到区块链最为适宜的市场有物联网、安全验证与多方交易的场景。将在共享经济、分布式电力、产权保险、现金结算、反洗钱等领域得到广泛应用。 

区块链作为一种互联网底层技术,将深刻影响互联网的变革过程。而互联网在已经大幅度接管零售业变革的当下,区块链改变零售业的时间和程度,会比我们的常识想象的更快。 查看全部
文 | 万德乾

零售老板内参独家专稿 未经许可不得转载

核心导读:

1.为什么区块链这么重要?

2.区块链对于零售业最大的影响是什么?

3.产消直通可能因为区块链而变为现实吗?

很多人刚刚解决“新零售是什么”,“区块链是什么”的问题又来了。

两者分别领衔了2017和2018开年的两大社会热点。 

为什么不说是行业热点,而要赋予其社会意义?在很多人看来,这是要改变社会状态的划时代浪潮。

虽然很多人依然对“区块链”(Blockchain)三个字,缺乏最起码的认知理解。

不过,《零售老板内参》APP(微信ID:lslb168)作为同步新零售大势的见证人,却要在此,试图探究新零售和区块链相结合的可能性。

毕竟,以前沿科技驱动零售业变革的当下,区块链不可能不对新零售有所影响。

什么是区块链

目前形成公认的意见中,认为区块链对新零售产生三个相对确定的技术赋能:优化供应链管理、商品溯源、消费者身份确认。 

其中,对现代物流的直接技术性加持,效果更为突出。 

详细分析区块链的具体加持路径之前,我们还是先回到大众更关心的问题:区块链是什么?

相对标准的区块链定义,将其叫做“分布式去中心化数据库”。显然,这10个字说了等于没说,大众需要一个更白话的解释,一看就懂。

相反的是,一个广为流传于朋友圈的图片段子,是这么调侃式介绍区块链的:

发生在中国最早的区块链项目,是四个矿工一组。其中一个矿工,能最先从144个随机数字中,碰撞出13个数字正确的哈希值,就可以获得一起记账权并得到激励。由于分布式记账需要得到其他几个矿工的共识,每次记账交易的时间,大约需要十几分钟。

这个区块链项目,就是——麻将。

段子归段子,不过段子也给了有关区块链不少关键词:矿工、哈希值(散列函数、Hash Function)、分布式记账、激励、共识。 

当然,大众还是没法直观的理解其逻辑构成,更奢谈与日常生活和一般人常识覆盖的社会范畴相挂钩。

相对正式的介绍则显得非常干涩难懂:区块链,是一串使用密码学方法相关联产生的数据块,每个数据块中包含了一次交易信息,用于验证信息的有效性(防伪)和生成下一个区块。具有共识、共防、分布式存储的三大特性。 

相对正式又不失活泼的介绍中,区块链的表述定义,则稍显容易。 

区块链,如同一串由36颗珍珠组合的珍珠项链,每颗珍珠都有对应的固定位置。当你拿走其中一颗珍珠,另外35颗珍珠的位置,都会发生变化,并以此类推。而你动过手脚的项链,同一批次,可能有10000串,这会导致每颗珍珠,都具有唯一性,不可更改,不可造假。 

得以确保每颗珍珠都具有唯一性和真实性的技术,就叫区块链。

总之一句话:“数据不能被更改”。 

区块链这套技术,可以表现在很多方面。比如大众最熟悉的比特币,以及新零售和物流(广义上,物流的一部分,又交叉重叠于新零售范畴)。 

是的,大众是先听到比特币,再听到区块链。比特币是区块链的一种(一种钱,或如同一款APP),而区块链是比特币的一种底层技术(一种记帐本,或如同Apple Store,应用商店)。

同理,将区块链和新零售作融合分析,结论就是:

区块链可以作为新零售的一种底层技术。而且,只是一种,不会代表新零售的全部。

区块链加持新零售

有一点值得特别注意,关于区块链的所有技术,其实早在比特币之前就有了。

为了用最直观的文字呈现区块链和新零售的关系,有关容易导致阅读理解的人和区块链生僻文字,包括:拜占庭共识算法(BFT)、以太坊(ETH)、智能合约、公有链等,这里一概不涉及。

回到前文,区块链的所有技术,已经存在很多年了。这套技术在全球大学的信息管理学中,多少有所涉及。也因为比特币,让区块链的各类技术集合起来,形成区块链的整套技术体系。 

就在区块链还未展现革命性颠覆互联网(Web)的能量之前,有关区块链技术应用在零售领域,已经有所涉及。而在区块链范畴向零售业的投入应用,也在类似阿里巴巴这些互联网巨头公司,有目的有计划的开展了。 

    []物流端应用[/]

最明显的落地应用,发生于物流领域。目前,全球已经成立一个“全球区块链货运联盟(BiTA)”,一家全球化的区块链教育和标准开发行业组织。目前已经吸引了包括通用电气运输集团、京东物流在内的230多家全球公司的加盟。 

就在3月初,沃尔玛向美国专利局成功申请一项专利,一个名叫“智能包裹(smart package)”的区块链技术,利用区块链技术完善更智能的包裹交付追踪系统。这个专利技术,还有一个记录包裹信息(比如包裹内容,环境条件,位置信息等)的设备。沃尔玛的这个技术,甚至还有一个基于区块链技术的无人机包裹寄送追踪系统。能实现包括卖家私人密钥地址,快递员私人密钥地址和买家私人密钥地址等,一系列用于监管配送地址的加密技术。

这方面,阿里巴巴物流服务商菜鸟网络也没闲着。2月底,菜鸟网络与天猫国际(天猫跨境电商平台)联合发布,基于区块链的防篡改的物流追踪数据。

消费者在手机淘宝的物流详情页面,可通过底端的“查看商品物流溯源信息”按钮,进入商品溯源页面。即可查看购买商品的全部溯源信息,确保商品来源真实可靠。

根据菜鸟国际技术负责人唐韧介绍,“区块链的最大特性就在于上传数据的不可篡改,通过商家、海关等各方上传的物流数据,消费者可以交叉认证自己购买商品的各项信息,想要在区块链上进行数据造假掺入假货,难度和登陆火星没什么区别。”

2.供应链端应用 

利用区块链技术构建“数字化供应链”,也是发生于零售业的一项延伸性技术创新,尤其是发生在全球跨境的供应链管理和流通。 

就像上文反复提到的那样,区块链技术有分布式记账功能,且不可篡改。这就从根本上杜绝供应链过程中,因为多环节的信息孤岛带来的不确定风险。比如各种贪腐风险。

这在跨境供应链管理上,还有更精妙的应用。利用区块链技术,商品的全球链路可追踪技术,会更加精准无误。分布式纪录让商品的全链路过程,从汇集生产、运输、通关、报检、第三方检验等信息,全部得到加密确证,不仅不可更改,每个流程还能清晰可追踪、可监控。

就像上文提到,区块链在纸张作业数字化之余,还能解决不同系统之间信息孤岛的不对称屏障,大大简化供应来环节的数据交换和作业流程。

湖畔大学教育长曾鸣就曾说,区块链对发生在国际贸易中的承兑汇票数字化,解决人工操作,数据交换速度和加密性,都具有革命性的影响。 

3.交易端应用 

因为是去中心化分布式数据库,区块链的点对点交易和私密性,可能对现有零售业的整个业务体系,存在颠覆性冲击。 

也就是说,从现有的“商品原产地(品牌商)——交易平台(零售商)——终端消费者”固有结构,直接跨过零售平台,达成从产地到终端的点对点交易。 

一种S2B2C交易模式。

既然区块链能查询到商品从源头、制作、出厂、上架销售所经历的所有历程。那么品牌商也能看到每件商品的流向,以及终端消费者的分布情况。 

从这个技术角度来说,品牌商是不是完全可以直接触达每一个精准又私密的终端消费者? 

理论上,完全可行。 

所谓产消直通(非产销),就是缩减消费者和生产者之间的信息距离。还让个性化定制、针对性服务变成可能。围绕在区块链这个自由、公开、安全加密的交易平台,传统零售平台中心连接消费者,完成商品最后交付的功能,很可能会被品牌商直接接管。 

当然,这肯定是没法预估时间的遥远未来。

全球顶级投行高盛,在2016年5月发表了首份《区块链——从理论走向实践》研究报告,详细分析了区块链在未来经济中所产生的价值。报告提到区块链最为适宜的市场有物联网、安全验证与多方交易的场景。将在共享经济、分布式电力、产权保险、现金结算、反洗钱等领域得到广泛应用。 

区块链作为一种互联网底层技术,将深刻影响互联网的变革过程。而互联网在已经大幅度接管零售业变革的当下,区块链改变零售业的时间和程度,会比我们的常识想象的更快。

区块链Hyperledger Fabric Samples 运行入门实战

区块链技术wangyin 发表了文章 • 0 个评论 • 608 次浏览 • 2018-03-22 16:01 • 来自相关话题

一、基本资料1、官方网站
http://hyperledger-fabric.readthedocs.io/en/latest/samples.html2、git地址
https://github.com/hyperledger/fabric-samples.git
二、实战下载代码
git clone -b master https://github.com/hyperledger/fabric-samples.gitcd fabric-samplesgit checkout {TAG}
TAG选择 v1.1.0-rc1
将fabric对应版本的bootstrap-1.0.0-rc1.sh 拷入fabric-samples

执行脚本
执行结果
生成使用root用户执行,普通用户执行会出现错误
./byfn.sh -m generate
错误
Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10'
Continue (y/n)? y
proceeding ...
/opt/gopath/src/github.com/hyperledger/fabric/fabric-samples/bin/cryptogen
##################################################[size=16]#[size=16]#[/size][/size]
[size=16]# Generate certificates using cryptogen tool [/size][size=16]#[/size]
##################################################[size=16]#[size=16]#[/size][/size]
org1.example.com
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4deb2a]
goroutine 1 [running]:
panic(0x6b8d00, 0xc4200120b0)
/opt/go/go1.7.5.linux.amd64/src/runtime/panic.go:500 +0x1a1
github.com/hyperledger/fabric/common/tools/cryptogen/msp.GenerateVerifyingMSP(0xc42001b280, 0x34, 0x0, 0x0, 0xc420011b20, 0x16)
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/msp/generator.go:168 +0x20a
main.generatePeerOrg(0x7042a0, 0xd, 0xc420013580, 0x4, 0xc4200135b0, 0x10, 0x7019fb, 0x2, 0xc420011ac0, 0x13, ...)
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/main.go:405 +0x5f2
main.generate()
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/main.go:263 +0x1ce
main.main()
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/main.go:212 +0x262
Failed to generate certificates...
执行失败
[root@iz2zeivrkckulq2dtidztmz first-network]# ./byfn.sh -m up
Starting with channel 'mychannel' and CLI timeout of '10'
Continue (y/n)? y
proceeding ...
Creating network "net_byfn" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-89b59b41ebbf -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
使用
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
重新启动docker
service docker start
http://blog.sina.com.cn/s/blog_8e032fb90102xuon.html
启动报错
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7efecc215259]
runtime stack:
runtime.throw(0xdd863e, 0x2a)
/opt/go/src/runtime/panic.go:566 +0x95
runtime.sigpanic()
/opt/go/src/runtime/sigpanic_unix.go:12 +0x2cc
goroutine 15 [syscall, locked to thread]:
runtime.cgocall(0xb1b240, 0xc420026df8, 0xc400000000)
/opt/go/src/runtime/cgocall.go:131 +0x110 fp=0xc420026db0 sp=0xc420026d70
net._C2func_getaddrinfo(0x22e8c20, 0x0, 0xc420169e30, 0xc420028290, 0x0, 0x0, 0x0)
??:0 +0x68 fp=0xc420026df8 sp=0xc420026db0
net.cgoLookupIPCNAME(0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/cgo_unix.go:146 +0x37c fp=0xc420026f18 sp=0xc420026df8
net.cgoIPLookup(0xc42037c480, 0x7ffc2f6b5a83, 0x13)
/opt/go/src/net/cgo_unix.go:198 +0x4d fp=0xc420026fa8 sp=0xc420026f18
runtime.goexit()
/opt/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc420026fb0 sp=0xc420026fa8
created by net.cgoLookupIP
/opt/go/src/net/cgo_unix.go:208 +0xb4
goroutine 1 [select]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext(0x7efecc42b000, 0xc42037c240, 0x7ffc2f6b5a83, 0x18, 0xc420384d20, 0x3, 0x4, 0x0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:434 +0x856
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.Dial(0x7ffc2f6b5a83, 0x18, 0xc420384d20, 0x3, 0x4, 0xc420384d20, 0x2, 0x4)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:319 +0x96
github.com/hyperledger/fabric/peer/common.GetBroadcastClient(0x7ffc2f6b5a83, 0x18, 0x301, 0x7ffc2f6b5adf, 0xa1, 0x380, 0xc42000fe00, 0x126, 0x126)
/opt/gopath/src/github.com/hyperledger/fabric/peer/common/ordererclient.go:66 +0x18f
github.com/hyperledger/fabric/peer/channel.InitCmdFactory.func1(0xc4201692f0, 0xc4201698c0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/channel.go:144 +0x67
github.com/hyperledger/fabric/peer/channel.sendCreateChainTransaction(0xc420320aa0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:164 +0xa7
github.com/hyperledger/fabric/peer/channel.executeCreate(0xc420320aa0, 0xc420320aa0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:178 +0x2f
github.com/hyperledger/fabric/peer/channel.create(0xc4202306c0, 0xc42022d4a0, 0x1, 0xa, 0xc420320aa0, 0xdb23b0, 0x5)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:213 +0x45
github.com/hyperledger/fabric/peer/channel.createCmd.func1(0xc4202306c0, 0xc42022d4a0, 0x1, 0xa, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:59 +0x52
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).execute(0xc4202306c0, 0xc42022d360, 0xa, 0xa, 0xc4202306c0, 0xc42022d360)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:599 +0x234
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x1401d40, 0xf, 0xc420010035, 0x7)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:689 +0x367
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).Execute(0x1401d40, 0x7d, 0xc420010035)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:648 +0x2b
main.main()
/opt/gopath/src/github.com/hyperledger/fabric/peer/main.go:118 +0x54e
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/opt/go/src/runtime/asm_amd64.s:2086 +0x1
goroutine 22 [syscall]:
os/signal.signal_recv(0xc4200217a8)
/opt/go/src/runtime/sigqueue.go:116 +0x157
os/signal.loop()
/opt/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.1
/opt/go/src/os/signal/signal_unix.go:28 +0x41
goroutine 24 [select]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*addrConn).transportMonitor(0xc4200f6fc0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:941 +0x66c
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*ClientConn).resetAddrConn.func1(0xc4200f6fc0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:656 +0x1de
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*ClientConn).resetAddrConn
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:657 +0x756
goroutine 10 [runnable]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.(*http2Client).reader(0xc42036e000)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:1098
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.newHTTP2Client
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:267 +0xd5e
goroutine 11 [runnable]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.(*http2Client).controller(0xc42036e000)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:1186
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.newHTTP2Client
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:297 +0xea5
goroutine 12 [runnable]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.newClientStream.func3(0x141ce40, 0xc42036e000, 0xc4201a7040, 0xc4201586e0, 0xc42000ac00)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/stream.go:249
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.newClientStream
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/stream.go:269 +0xf12
goroutine 13 [select]:
net.lookupIPContext(0x1418f40, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/lookup.go:122 +0x7bc
net.internetAddrList(0x1418f40, 0xc42037c3c0, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0x0, 0xa, ...)
/opt/go/src/net/ipsock.go:241 +0x5e0
net.resolveAddrList(0x1418f40, 0xc42037c3c0, 0xdb1d7f, 0x4, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, ...)
/opt/go/src/net/dial.go:179 +0x106
net.(*Dialer).DialContext(0xc42004b4f8, 0x1418f40, 0xc42037c3c0, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0x0, ...)
/opt/go/src/net/dial.go:329 +0x238
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.dialContext(0x1418f40, 0xc42037c3c0, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0xc42033c4b0, 0xc420378780)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/go17.go:53 +0xaa
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext.func1(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x1, 0x0, 0x140a680, 0xc42014ed50)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:341 +0x86
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.newProxyDialer.func1(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x13, 0xc420039701, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/proxy.go:136 +0x143
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.dial(0x7efecc42b000, 0xc42037c3c0, 0xc420373380, 0x7ffc2f6b5a83, 0x18, 0x410a5e, 0xc4200150e0, 0xa0, 0x98)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:135 +0x5a
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.newHTTP2Client(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0xdbd7a1, 0x11, 0x0, 0x0, ...)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:173 +0xbf
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.NewClientTransport(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0xdbd7a1, 0x11, 0x0, 0x0, ...)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/transport.go:463 +0xae
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*addrConn).resetTransport(0xc420354540, 0xc420169d00, 0xc420354560, 0xc420039e10)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:876 +0x282
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*ClientConn).resetAddrConn(0xc4203701a0, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:630 +0x41e
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext.func3(0xc42037c2a0, 0xc4203701a0, 0x141ab00, 0xc420028278, 0x7ffc2f6b5a83, 0x18)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:429 +0x273
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:433 +0x429
goroutine 14 [select]:
net.cgoLookupIP(0x1418f40, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/cgo_unix.go:209 +0x2f5
net.lookupIP(0x1418f40, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/lookup_unix.go:70 +0xf9
net.glob..func11(0x1418f40, 0xc42037c3c0, 0xe40da0, 0x7ffc2f6b5a83, 0x13, 0xc4200266c8, 0x7204c9, 0xc420026708, 0xc420026718, 0x455cc0)
/opt/go/src/net/hook.go:19 +0x52
net.lookupIPContext.func1(0xc4203701a0, 0x7ffc2f6b5a83, 0x18, 0x0)
/opt/go/src/net/lookup.go:119 +0x5c
internal/singleflight.(*Group).doCall(0x1435e20, 0xc42035ae60, 0x7ffc2f6b5a83, 0x13, 0xc420169da0)
/opt/go/src/internal/singleflight/singleflight.go:93 +0x3c
created by internal/singleflight.(*Group).DoChan
/opt/go/src/internal/singleflight/singleflight.go:86 +0x339
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========
export PATH=/opt/gopath/hyperledger/fabric-samples/bin:$PATH
[chain@iz2zeivrkckulq2dtidztmz fabric-samples]$ ./bootstrap.sh
./bootstrap.sh: line 1: opyright: command not found
curl -sSL https://github.com/hyperledger/fabric/blob/v1.1.0-rc1/scripts/bootstrap.sh | bash -s 1.1.0-rc1
+ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
2018-03-06 16:13:51.740 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.744 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
#########################################################[size=16]#[size=16]#[/size][/size]
# Generating channel configuration transaction 'channel.tx' #
#########################################################[size=16]#[size=16]#[/size][/size]
+ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
2018-03-06 16:13:51.767 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.771 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
#########################################################[size=16]#[size=16]#[/size][/size]
##[size=16]# Generating anchor peer update for Org1MSP [/size]#[size=16]#[/size]
#########################################################[size=16]#[size=16]#[/size][/size]
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
2018-03-06 16:13:51.795 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.799 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
#########################################################[size=16]#[size=16]#[/size][/size]
##[size=16]# Generating anchor peer update for Org2MSP [/size]#[size=16]#[/size]
#########################################################[size=16]#[size=16]#[/size][/size]
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
2018-03-06 16:13:51.823 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.827 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
阿里云服务器,切换到 bootstrap-1.0.0-rc1.sh
清除所有image
docker rmi $(docker images)
  查看全部

一、基本资料1、官方网站
http://hyperledger-fabric.readthedocs.io/en/latest/samples.html2、git地址
https://github.com/hyperledger/fabric-samples.git
二、实战下载代码
git clone -b master https://github.com/hyperledger/fabric-samples.gitcd fabric-samplesgit checkout {TAG}
TAG选择 v1.1.0-rc1
将fabric对应版本的bootstrap-1.0.0-rc1.sh 拷入fabric-samples

执行脚本
执行结果
生成使用root用户执行,普通用户执行会出现错误
./byfn.sh -m generate
错误
Generating certs and genesis block for with channel 'mychannel' and CLI timeout of '10'
Continue (y/n)? y
proceeding ...
/opt/gopath/src/github.com/hyperledger/fabric/fabric-samples/bin/cryptogen
##################################################[size=16]#[size=16]#[/size][/size]
[size=16]# Generate certificates using cryptogen tool [/size][size=16]#[/size]
##################################################[size=16]#[size=16]#[/size][/size]
org1.example.com
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0x4deb2a]
goroutine 1 [running]:
panic(0x6b8d00, 0xc4200120b0)
/opt/go/go1.7.5.linux.amd64/src/runtime/panic.go:500 +0x1a1
github.com/hyperledger/fabric/common/tools/cryptogen/msp.GenerateVerifyingMSP(0xc42001b280, 0x34, 0x0, 0x0, 0xc420011b20, 0x16)
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/msp/generator.go:168 +0x20a
main.generatePeerOrg(0x7042a0, 0xd, 0xc420013580, 0x4, 0xc4200135b0, 0x10, 0x7019fb, 0x2, 0xc420011ac0, 0x13, ...)
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/main.go:405 +0x5f2
main.generate()
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/main.go:263 +0x1ce
main.main()
/w/workspace/fabric-binaries-x86_64/gopath/src/github.com/hyperledger/fabric/common/tools/cryptogen/main.go:212 +0x262
Failed to generate certificates...
执行失败
[root@iz2zeivrkckulq2dtidztmz first-network]# ./byfn.sh -m up
Starting with channel 'mychannel' and CLI timeout of '10'
Continue (y/n)? y
proceeding ...
Creating network "net_byfn" with the default driver
ERROR: Failed to Setup IP tables: Unable to enable SKIP DNAT rule: (iptables failed: iptables --wait -t nat -I DOCKER -i br-89b59b41ebbf -j RETURN: iptables: No chain/target/match by that name.
(exit status 1))
使用
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
重新启动docker
service docker start
http://blog.sina.com.cn/s/blog_8e032fb90102xuon.html
启动报错
fatal error: unexpected signal during runtime execution
[signal SIGSEGV: segmentation violation code=0x1 addr=0x63 pc=0x7efecc215259]
runtime stack:
runtime.throw(0xdd863e, 0x2a)
/opt/go/src/runtime/panic.go:566 +0x95
runtime.sigpanic()
/opt/go/src/runtime/sigpanic_unix.go:12 +0x2cc
goroutine 15 [syscall, locked to thread]:
runtime.cgocall(0xb1b240, 0xc420026df8, 0xc400000000)
/opt/go/src/runtime/cgocall.go:131 +0x110 fp=0xc420026db0 sp=0xc420026d70
net._C2func_getaddrinfo(0x22e8c20, 0x0, 0xc420169e30, 0xc420028290, 0x0, 0x0, 0x0)
??:0 +0x68 fp=0xc420026df8 sp=0xc420026db0
net.cgoLookupIPCNAME(0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/cgo_unix.go:146 +0x37c fp=0xc420026f18 sp=0xc420026df8
net.cgoIPLookup(0xc42037c480, 0x7ffc2f6b5a83, 0x13)
/opt/go/src/net/cgo_unix.go:198 +0x4d fp=0xc420026fa8 sp=0xc420026f18
runtime.goexit()
/opt/go/src/runtime/asm_amd64.s:2086 +0x1 fp=0xc420026fb0 sp=0xc420026fa8
created by net.cgoLookupIP
/opt/go/src/net/cgo_unix.go:208 +0xb4
goroutine 1 [select]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext(0x7efecc42b000, 0xc42037c240, 0x7ffc2f6b5a83, 0x18, 0xc420384d20, 0x3, 0x4, 0x0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:434 +0x856
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.Dial(0x7ffc2f6b5a83, 0x18, 0xc420384d20, 0x3, 0x4, 0xc420384d20, 0x2, 0x4)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:319 +0x96
github.com/hyperledger/fabric/peer/common.GetBroadcastClient(0x7ffc2f6b5a83, 0x18, 0x301, 0x7ffc2f6b5adf, 0xa1, 0x380, 0xc42000fe00, 0x126, 0x126)
/opt/gopath/src/github.com/hyperledger/fabric/peer/common/ordererclient.go:66 +0x18f
github.com/hyperledger/fabric/peer/channel.InitCmdFactory.func1(0xc4201692f0, 0xc4201698c0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/channel.go:144 +0x67
github.com/hyperledger/fabric/peer/channel.sendCreateChainTransaction(0xc420320aa0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:164 +0xa7
github.com/hyperledger/fabric/peer/channel.executeCreate(0xc420320aa0, 0xc420320aa0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:178 +0x2f
github.com/hyperledger/fabric/peer/channel.create(0xc4202306c0, 0xc42022d4a0, 0x1, 0xa, 0xc420320aa0, 0xdb23b0, 0x5)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:213 +0x45
github.com/hyperledger/fabric/peer/channel.createCmd.func1(0xc4202306c0, 0xc42022d4a0, 0x1, 0xa, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/peer/channel/create.go:59 +0x52
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).execute(0xc4202306c0, 0xc42022d360, 0xa, 0xa, 0xc4202306c0, 0xc42022d360)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:599 +0x234
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x1401d40, 0xf, 0xc420010035, 0x7)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:689 +0x367
github.com/hyperledger/fabric/vendor/github.com/spf13/cobra.(*Command).Execute(0x1401d40, 0x7d, 0xc420010035)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/github.com/spf13/cobra/command.go:648 +0x2b
main.main()
/opt/gopath/src/github.com/hyperledger/fabric/peer/main.go:118 +0x54e
goroutine 17 [syscall, locked to thread]:
runtime.goexit()
/opt/go/src/runtime/asm_amd64.s:2086 +0x1
goroutine 22 [syscall]:
os/signal.signal_recv(0xc4200217a8)
/opt/go/src/runtime/sigqueue.go:116 +0x157
os/signal.loop()
/opt/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.1
/opt/go/src/os/signal/signal_unix.go:28 +0x41
goroutine 24 [select]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*addrConn).transportMonitor(0xc4200f6fc0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:941 +0x66c
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*ClientConn).resetAddrConn.func1(0xc4200f6fc0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:656 +0x1de
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*ClientConn).resetAddrConn
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:657 +0x756
goroutine 10 [runnable]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.(*http2Client).reader(0xc42036e000)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:1098
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.newHTTP2Client
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:267 +0xd5e
goroutine 11 [runnable]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.(*http2Client).controller(0xc42036e000)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:1186
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.newHTTP2Client
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:297 +0xea5
goroutine 12 [runnable]:
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.newClientStream.func3(0x141ce40, 0xc42036e000, 0xc4201a7040, 0xc4201586e0, 0xc42000ac00)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/stream.go:249
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.newClientStream
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/stream.go:269 +0xf12
goroutine 13 [select]:
net.lookupIPContext(0x1418f40, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/lookup.go:122 +0x7bc
net.internetAddrList(0x1418f40, 0xc42037c3c0, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0x0, 0xa, ...)
/opt/go/src/net/ipsock.go:241 +0x5e0
net.resolveAddrList(0x1418f40, 0xc42037c3c0, 0xdb1d7f, 0x4, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, ...)
/opt/go/src/net/dial.go:179 +0x106
net.(*Dialer).DialContext(0xc42004b4f8, 0x1418f40, 0xc42037c3c0, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0x0, ...)
/opt/go/src/net/dial.go:329 +0x238
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.dialContext(0x1418f40, 0xc42037c3c0, 0xdb177f, 0x3, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0xc42033c4b0, 0xc420378780)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/go17.go:53 +0xaa
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext.func1(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x1, 0x0, 0x140a680, 0xc42014ed50)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:341 +0x86
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.newProxyDialer.func1(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x13, 0xc420039701, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/proxy.go:136 +0x143
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.dial(0x7efecc42b000, 0xc42037c3c0, 0xc420373380, 0x7ffc2f6b5a83, 0x18, 0x410a5e, 0xc4200150e0, 0xa0, 0x98)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:135 +0x5a
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.newHTTP2Client(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0xdbd7a1, 0x11, 0x0, 0x0, ...)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/http2_client.go:173 +0xbf
github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport.NewClientTransport(0x7efecc42b000, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0xdbd7a1, 0x11, 0x0, 0x0, ...)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/transport/transport.go:463 +0xae
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*addrConn).resetTransport(0xc420354540, 0xc420169d00, 0xc420354560, 0xc420039e10)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:876 +0x282
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*ClientConn).resetAddrConn(0xc4203701a0, 0x7ffc2f6b5a83, 0x18, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:630 +0x41e
github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext.func3(0xc42037c2a0, 0xc4203701a0, 0x141ab00, 0xc420028278, 0x7ffc2f6b5a83, 0x18)
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:429 +0x273
created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.DialContext
/opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/clientconn.go:433 +0x429
goroutine 14 [select]:
net.cgoLookupIP(0x1418f40, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/cgo_unix.go:209 +0x2f5
net.lookupIP(0x1418f40, 0xc42037c3c0, 0x7ffc2f6b5a83, 0x13, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/lookup_unix.go:70 +0xf9
net.glob..func11(0x1418f40, 0xc42037c3c0, 0xe40da0, 0x7ffc2f6b5a83, 0x13, 0xc4200266c8, 0x7204c9, 0xc420026708, 0xc420026718, 0x455cc0)
/opt/go/src/net/hook.go:19 +0x52
net.lookupIPContext.func1(0xc4203701a0, 0x7ffc2f6b5a83, 0x18, 0x0)
/opt/go/src/net/lookup.go:119 +0x5c
internal/singleflight.(*Group).doCall(0x1435e20, 0xc42035ae60, 0x7ffc2f6b5a83, 0x13, 0xc420169da0)
/opt/go/src/internal/singleflight/singleflight.go:93 +0x3c
created by internal/singleflight.(*Group).DoChan
/opt/go/src/internal/singleflight/singleflight.go:86 +0x339
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========
export PATH=/opt/gopath/hyperledger/fabric-samples/bin:$PATH
[chain@iz2zeivrkckulq2dtidztmz fabric-samples]$ ./bootstrap.sh
./bootstrap.sh: line 1: opyright: command not found
curl -sSL https://github.com/hyperledger/fabric/blob/v1.1.0-rc1/scripts/bootstrap.sh | bash -s 1.1.0-rc1
+ configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
2018-03-06 16:13:51.740 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.744 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
#########################################################[size=16]#[size=16]#[/size][/size]
# Generating channel configuration transaction 'channel.tx' #
#########################################################[size=16]#[size=16]#[/size][/size]
+ configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
2018-03-06 16:13:51.767 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.771 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
#########################################################[size=16]#[size=16]#[/size][/size]
##[size=16]# Generating anchor peer update for Org1MSP [/size]#[size=16]#[/size]
#########################################################[size=16]#[size=16]#[/size][/size]
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
2018-03-06 16:13:51.795 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.799 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
#########################################################[size=16]#[size=16]#[/size][/size]
##[size=16]# Generating anchor peer update for Org2MSP [/size]#[size=16]#[/size]
#########################################################[size=16]#[size=16]#[/size][/size]
+ configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
2018-03-06 16:13:51.823 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-03-06 16:13:51.827 CST [common/configtx/tool/localconfig] Load -> CRIT 002 Error unmarshaling config into struct: 4 error(s) decoding:
* '' has invalid keys: capabilities
* 'Profiles[TwoOrgsChannel].Application' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis]' has invalid keys: Capabilities
* 'Profiles[TwoOrgsOrdererGenesis].Orderer' has invalid keys: Capabilities
+ set +x
阿里云服务器,切换到 bootstrap-1.0.0-rc1.sh
清除所有image
docker rmi $(docker images)
 

insight error 是什么鬼~~

默认分类张增飞 回复了问题 • 3 人关注 • 4 个回复 • 210 次浏览 • 2018-03-21 21:37 • 来自相关话题

wificoin轻钱包邀请您参与内测

wificoin刘登丰 回复了问题 • 52 人关注 • 68 个回复 • 1437 次浏览 • 2018-03-21 18:43 • 来自相关话题

《区块链技术指南》笔记-Hash算法

区块链技术wangyin 发表了文章 • 0 个评论 • 136 次浏览 • 2018-03-21 16:26 • 来自相关话题

定义

Hash(哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能将任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。 
例如计算一段话”hello blockchain”的MD5 hash值为830e6258b7b27489347f39535b86a52b

这意味着我们只要对某文件进行MD5 Hash计算,得到结果为830e6258b7b27489347f39535b86a52b,这就说明文件内容极大概率上就是”hello blockchain”。可见,Hash的核心思想十分类似于基于内容的编址或命名。 
注:hash值在应用中又被称为指纹(fingerprint)、摘要(digest)。 
注:MD5是一个经典的hash算法,其和SHA-1算法都已经被证明安全性不足应用于商业场景。 
一个优秀的hash算法,将能实现:

正向快速:给定明文和hash算法,在有限时间和有限资源内能计算出hash值。
逆向困难:给定(若干)hash值,在有限时间内很难(基本不可能)逆推出明文。
输入敏感:原始输入信息修改一点信息,产生的hash值看起来应该都有很大不同。
冲突避免:很难找到两段内容不同的明文,使得他们的hash值一致(发生冲突)。

冲突避免有时候又被称为“抗碰撞性”。如果给定一个明文前提下,难以找到碰撞的另一个明文,称为“弱抗碰撞性”;如果难以找到任意两个明文,发生碰撞,则称算法具有“强抗碰撞性”。 
很多场景下,也要求对于任意长的输入内容,输出定长的hash结果。

流行的算法

目前流行的Hash算法包括MD5、SHA-1和SHA-2。 
MD4(RFC1320)是在1990年设计的,MD是Message Digest的缩写。其输出为128位。MD4已证明不够安全。 
MD5(RFC1321)是于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是128位。MD5比MD4复杂,并且计算速度要慢一点,更安全一些。MD5已被证明不具备“强抗碰撞性”。 
SHA(Secure Hash Algorithm)是一个Hash函数族,于1993年发布第一个算法。目前知名的SHA-1在1995年面世,它的输出长度为160位的hash值,因此抗穷举性更好。SHA-1设计时基于和MD4相同的原理,并且模仿了该算法。SHA-1已被证明不具备“强抗碰撞性”。 
为了提高安全性,NIST还设计出了SHA-224、SHA-256、SHA-384,和SHA-512算法(统称为SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已被提出。 
目前,一般认为MD5和SHA-1已经不够安全,推荐至少使用SHA2-256算法。

性能

一般的,Hash算法都是算力敏感型,意味着计算资源是瓶颈,主频越高的CPU进行Hash的速度也越快。 
也有一些Hash算法不是算力敏感的,例如scrypt,需要大量的内存资源,节点不能通过简单的增加更多CPU来获得hash性能的提升。

数字摘要

顾名思义,数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始数字内容。 
数字摘要是解决确保内容没被篡改过的问题(利用Hash函数的抗碰撞性特点)。 
数字摘要是Hash算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。 查看全部
定义

Hash(哈希或散列)算法是信息技术领域非常基础也非常重要的技术。它能将任意长度的二进制值(明文)映射为较短的固定长度的二进制值(Hash值),并且不同的明文很难映射为相同的Hash值。 
例如计算一段话”hello blockchain”的MD5 hash值为830e6258b7b27489347f39535b86a52b

这意味着我们只要对某文件进行MD5 Hash计算,得到结果为830e6258b7b27489347f39535b86a52b,这就说明文件内容极大概率上就是”hello blockchain”。可见,Hash的核心思想十分类似于基于内容的编址或命名。 
注:hash值在应用中又被称为指纹(fingerprint)、摘要(digest)。 
注:MD5是一个经典的hash算法,其和SHA-1算法都已经被证明安全性不足应用于商业场景。 
一个优秀的hash算法,将能实现:

正向快速:给定明文和hash算法,在有限时间和有限资源内能计算出hash值。
逆向困难:给定(若干)hash值,在有限时间内很难(基本不可能)逆推出明文。
输入敏感:原始输入信息修改一点信息,产生的hash值看起来应该都有很大不同。
冲突避免:很难找到两段内容不同的明文,使得他们的hash值一致(发生冲突)。

冲突避免有时候又被称为“抗碰撞性”。如果给定一个明文前提下,难以找到碰撞的另一个明文,称为“弱抗碰撞性”;如果难以找到任意两个明文,发生碰撞,则称算法具有“强抗碰撞性”。 
很多场景下,也要求对于任意长的输入内容,输出定长的hash结果。

流行的算法

目前流行的Hash算法包括MD5、SHA-1和SHA-2。 
MD4(RFC1320)是在1990年设计的,MD是Message Digest的缩写。其输出为128位。MD4已证明不够安全。 
MD5(RFC1321)是于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是128位。MD5比MD4复杂,并且计算速度要慢一点,更安全一些。MD5已被证明不具备“强抗碰撞性”。 
SHA(Secure Hash Algorithm)是一个Hash函数族,于1993年发布第一个算法。目前知名的SHA-1在1995年面世,它的输出长度为160位的hash值,因此抗穷举性更好。SHA-1设计时基于和MD4相同的原理,并且模仿了该算法。SHA-1已被证明不具备“强抗碰撞性”。 
为了提高安全性,NIST还设计出了SHA-224、SHA-256、SHA-384,和SHA-512算法(统称为SHA-2),跟SHA-1算法原理类似。SHA-3相关算法也已被提出。 
目前,一般认为MD5和SHA-1已经不够安全,推荐至少使用SHA2-256算法。

性能

一般的,Hash算法都是算力敏感型,意味着计算资源是瓶颈,主频越高的CPU进行Hash的速度也越快。 
也有一些Hash算法不是算力敏感的,例如scrypt,需要大量的内存资源,节点不能通过简单的增加更多CPU来获得hash性能的提升。

数字摘要

顾名思义,数字摘要是对数字内容进行Hash运算,获取唯一的摘要值来指代原始数字内容。 
数字摘要是解决确保内容没被篡改过的问题(利用Hash函数的抗碰撞性特点)。 
数字摘要是Hash算法最重要的一个用途。在网络上下载软件或文件时,往往同时会提供一个数字摘要值,用户下载下来原始文件可以自行进行计算,并同提供的摘要值进行比对,以确保内容没有被修改过。

区块链 PoW 与 PoS 的纷争

开源讨论wangyin 发表了文章 • 0 个评论 • 122 次浏览 • 2018-03-21 16:11 • 来自相关话题

最近在研究区块链,可能会有一些非前端文章,感兴趣的可以关注关注哟。

有关注区块链的,肯定会经常看到这两个名词 -- PoW 与 PoS。但是很多人对他们的含义的理解存在很多偏差。那么他们的含义与区别是什么呢?
简单而言,PoW 和 PoS 是 2 种不同的对记账权利的分配方式。

PoW

POW(Proof of Work)直译过来即是工作证明,也叫工作量证明。(例子:BTC、LTC)

这是什么意思呢?这就是说,你能够获得的币的数量,取决于你挖矿贡献的有效工作,也就是说,你用于挖矿的矿机的性能越好,分给你的收益就会越多,这就是根据你的工作证明来执行币的分配方式。

比特币采用的共识算法就是 PoW,专业一点说,矿工们在挖一个新的区块时,必须对SHA-256密码散列函数进行运算,区块中的随机散列值以一个或多个0开始。随着0数目的上升,找到这个解所需要的工作量将呈指数增长,矿工通过反复尝试找到这个解。

额,通俗的说,PoW 的意思就是社会主义,按劳分配,多劳多得。

PoW 的优势与劣势

PoW机制的设计目的是保证安全。无论是在中心化还是非中心化系统中,防止作弊都是很重要的。

PoW 假设大多数人不会作弊,如果你想作弊,你要有压倒大多数人的算力(51%攻击),但不能防止矿工抱团取暖。

51%攻击:所谓51%攻击,就是利用一些虚拟区块链货币使用算力作为竞争条件的特点,使用算力优势撤销自己已经发生的付款交易。如果有人掌握了50%以上的算力,他能够比其他人更快地找到开采区块需要的那个随机数,因此他实际上拥有了绝对那个区块的有效权利。

因为作弊要付出一定成本,作弊者就会谨慎对待了。在比特币的 PoW 机制中,由于获得计算结果的概率趋近于所占算力比例,因此在不掌握51%以上算力的前提下,矿工欺诈的成本要显著高于诚实挖矿,甚至不可能完成欺诈(由于概率过低)。

PoS

PoS(Proof of Stake)直译过来就是股权证明,即直接证明你持有的份额。 (例子:恒星币,狗狗币等)

由于 BTC 的 PoW 机制决定了谁的算力强谁就能获得更多收益,拥有更大的记账权。所以类似比特币这样的 PoW 币种挖矿带来了巨大的电力能源消耗,为了解决这种情况,所以有了 PoS。

PoS 试图解决 PoW 机制中大量资源被浪费的情况。这种机制通过计算你持有占总币数的百分比以及占有币数的时间来决定记账权。

在现实世界中 PoS 很普遍,最为熟知的例子就是股票。股票是用来记录股权的证明,股票持有量多的,拥有更高更多的投票权和收益权。

额,通俗的说,PoS 就是资本主义,按钱分配,钱生钱。

PoS 的优势与劣势

Pos 当然也能防作弊,因为如果一名持有 51%以上股权的人作弊,相当于他坑了自己,因为一个人自己不会杀死自己的钱。

PoS 机制由股东自己保证安全,工作原理是利益捆绑。在这个模式下,不持有 PoS 的人无法对 PoS 构成威胁。PoS 的安全取决于持有者,和其他任何因素无关。

PoW + PoW 混合机制

所以,为了结合两种挖矿方式的优点,开始有了基于 PoW+PoS 混合共识机制的币。例如 Hcash,以及以太坊 ETH 也正在向 PoS+PoW 混合挖升级矿转变。

那么,PoW + PoW 混合机制的优势是什么呢?

它能够将受众群体最大化。

假设一个币它的机制是PoW + PoW 的混合机制。那么持有该币的用户与矿工均可以参与到投票中,共同参与该币社区的重大决定,持币者与矿工都可以影响预先编制好的更新,如隔离见证( .www.huayyule.com)、增大区块等等。如果这些更新被广泛认可,无需开发者干预,链就会自动分叉以配合更新。而这才是真正的去中心化。

以混合机制来实现广义上的 DAO(去中心化自治组织)的高效运行。通过 PoS+PoW 公平的按持币数量与工作量分配投票权重,实现社区自治。

总结

PoW 和 PoS 各有优缺点。但看上去似乎是 PoW 的优点多。看看流通市值排行榜靠前的币种,大多数都是PoW。

PoS 有中心化的嫌疑,PoW 虽然能做到充分地去中心化,但是存在大量消耗能源的缺点。也许 PoW + PoW 是一种很好的解决方式,但是区块链社区是不断发展的,技术也是不断迭代更新优化的,更好的解决方式也许又会被推出来。

不断的学习,了解,才能更好的立足于区块链。 查看全部
最近在研究区块链,可能会有一些非前端文章,感兴趣的可以关注关注哟。

有关注区块链的,肯定会经常看到这两个名词 -- PoW 与 PoS。但是很多人对他们的含义的理解存在很多偏差。那么他们的含义与区别是什么呢?
简单而言,PoW 和 PoS 是 2 种不同的对记账权利的分配方式。

PoW

POW(Proof of Work)直译过来即是工作证明,也叫工作量证明。(例子:BTC、LTC)

这是什么意思呢?这就是说,你能够获得的币的数量,取决于你挖矿贡献的有效工作,也就是说,你用于挖矿的矿机的性能越好,分给你的收益就会越多,这就是根据你的工作证明来执行币的分配方式。

比特币采用的共识算法就是 PoW,专业一点说,矿工们在挖一个新的区块时,必须对SHA-256密码散列函数进行运算,区块中的随机散列值以一个或多个0开始。随着0数目的上升,找到这个解所需要的工作量将呈指数增长,矿工通过反复尝试找到这个解。

额,通俗的说,PoW 的意思就是社会主义,按劳分配,多劳多得。

PoW 的优势与劣势

PoW机制的设计目的是保证安全。无论是在中心化还是非中心化系统中,防止作弊都是很重要的。

PoW 假设大多数人不会作弊,如果你想作弊,你要有压倒大多数人的算力(51%攻击),但不能防止矿工抱团取暖。

51%攻击:所谓51%攻击,就是利用一些虚拟区块链货币使用算力作为竞争条件的特点,使用算力优势撤销自己已经发生的付款交易。如果有人掌握了50%以上的算力,他能够比其他人更快地找到开采区块需要的那个随机数,因此他实际上拥有了绝对那个区块的有效权利。

因为作弊要付出一定成本,作弊者就会谨慎对待了。在比特币的 PoW 机制中,由于获得计算结果的概率趋近于所占算力比例,因此在不掌握51%以上算力的前提下,矿工欺诈的成本要显著高于诚实挖矿,甚至不可能完成欺诈(由于概率过低)。

PoS

PoS(Proof of Stake)直译过来就是股权证明,即直接证明你持有的份额。 (例子:恒星币,狗狗币等)

由于 BTC 的 PoW 机制决定了谁的算力强谁就能获得更多收益,拥有更大的记账权。所以类似比特币这样的 PoW 币种挖矿带来了巨大的电力能源消耗,为了解决这种情况,所以有了 PoS。

PoS 试图解决 PoW 机制中大量资源被浪费的情况。这种机制通过计算你持有占总币数的百分比以及占有币数的时间来决定记账权。

在现实世界中 PoS 很普遍,最为熟知的例子就是股票。股票是用来记录股权的证明,股票持有量多的,拥有更高更多的投票权和收益权。

额,通俗的说,PoS 就是资本主义,按钱分配,钱生钱。

PoS 的优势与劣势

Pos 当然也能防作弊,因为如果一名持有 51%以上股权的人作弊,相当于他坑了自己,因为一个人自己不会杀死自己的钱。

PoS 机制由股东自己保证安全,工作原理是利益捆绑。在这个模式下,不持有 PoS 的人无法对 PoS 构成威胁。PoS 的安全取决于持有者,和其他任何因素无关。

PoW + PoW 混合机制

所以,为了结合两种挖矿方式的优点,开始有了基于 PoW+PoS 混合共识机制的币。例如 Hcash,以及以太坊 ETH 也正在向 PoS+PoW 混合挖升级矿转变。

那么,PoW + PoW 混合机制的优势是什么呢?

它能够将受众群体最大化。

假设一个币它的机制是PoW + PoW 的混合机制。那么持有该币的用户与矿工均可以参与到投票中,共同参与该币社区的重大决定,持币者与矿工都可以影响预先编制好的更新,如隔离见证( .www.huayyule.com)、增大区块等等。如果这些更新被广泛认可,无需开发者干预,链就会自动分叉以配合更新。而这才是真正的去中心化。

以混合机制来实现广义上的 DAO(去中心化自治组织)的高效运行。通过 PoS+PoW 公平的按持币数量与工作量分配投票权重,实现社区自治。

总结

PoW 和 PoS 各有优缺点。但看上去似乎是 PoW 的优点多。看看流通市值排行榜靠前的币种,大多数都是PoW。

PoS 有中心化的嫌疑,PoW 虽然能做到充分地去中心化,但是存在大量消耗能源的缺点。也许 PoW + PoW 是一种很好的解决方式,但是区块链社区是不断发展的,技术也是不断迭代更新优化的,更好的解决方式也许又会被推出来。

不断的学习,了解,才能更好的立足于区块链。

1分钟链圈 | GitHub活跃度排名:EOS跃居第2,BTC第21;布比完成1亿元融资;SEC向80家数字货币公司发出传票

开源讨论wangyin 发表了文章 • 0 个评论 • 114 次浏览 • 2018-03-21 16:09 • 来自相关话题

Hi,everybody!


这是3月5日的每日1句话新闻,只需1分钟,看看全球最热、最新的区块链新闻。
观点




李鸣:区块链有望成为各行业基础设施 统一标识与监管缺失等难题待解

渣打集团董事会主席:未来央行推出法定数字货币在意料之中

社保基金理事会原副理事长:大数据、区块链等新技术有助于解决养老问题
全球




EOS创始人Daniel larimer澄清:离开EOS是谣言

两会代表委员关注区块链:多场景和防炒作成关键词

Bittrex将于3月9日起停止为朝鲜等5个地区投资者提供服务


企业


SEC已向80家数字货币公司发出传票

酷我音乐:区块链产品内测不实,没有ICO计划

区块链公司布比完成1亿元A轮融资,深耕“区块链+供应链金融”


趋势


GitHub活跃度排行榜:EOS跃居第二,BTC排名第二十一







恭喜你,今天的新闻全部看完啦。1分钟链圈事,周一打卡成功。
想看详细信息?以下1分钟,让你了解个透!




[]两会代表委员关注区块链:多场景和防炒作成关键词[/]



多位两会代表委员们纷纷建言区块链应用场景并肯定区块链技术的革命性意义,防止炒作也是业界共同关心的话题。张近东、俞敏洪、周鸿祎、李彦宏、马化腾、丁磊等均在建言之列。“两会”有关区块链的建言聚焦在如何落地应用场景尤其是数字货币、目前区块链的发展阶段以及如何防炒作三个方面。(界面)




[]EOS创始人Daniel larimer澄清:离开EOS是谣言[/]



EOS创始人Daniel larimer在EOS电报群中亲自澄清:“关于我会离开EOS的新闻是谣言,我会一直在Block.One和EOS团队。”
[]SEC已向80家数字货币公司发出传票[/]



美国证券交易委员会(SEC)已向80家数字货币公司发出传票,包括TechCrunch创始人Michael Arrington。SEC主席Jay Clayton表示,SEC正在为ICO市场投入大量资源,并在夏季警告中发布了关于ICO构成危险的投资者公告。华盛顿分析公司高级金融服务政策分析师Ryan Schoen认为,涉及交易未经注册证券的交易所可能是SEC审查的重点。(CNBC)





[]酷我音乐:区块链产品内测不实,没有ICO计划[/]



酷我音乐声明称,网络上出现的“酷我音乐区块链非公开内测”的消息不实。酷我音乐表示,未来会持续关注区块链技术 ,没有任何形式的ICO计划,公司将严格遵守相关法律法规。近日有消息称,酷我音乐推出了首款音乐大众区块链产品“酷链钱包”。(Bianews)




[]区块链公司布比完成1亿元A轮融资,深耕“区块链+供应链金融”[/]



新业态区块链公司布比已于2017年11月完成1亿元人民币A轮融资,由新链创投、盘古创富、博将资本、长江国弘、步长集团等多家机构投资,前几轮投资机构启赋资本、招商局创投、界石投资、万向分布式资本、点亮资本全部继续跟投。布比公司表示,此次融资主要用于技术研发和市场运营。(36氪)




[]李鸣:区块链有望成为各行业基础设施 统一标识与监管缺失等难题待解[/]



中国电子技术标准化研究院区块链研究室主任李鸣表示,未来区块链行业会与IT行业一样,与应用场景相融合,成为信任的连接器和价值传递的技术保障,成为所有行业发展的必要基础设施。不过监管框架的缺失、新型技术安全、多种技术体系、标准规范的缺乏等问题,对区块链应用落地提出了很多挑战,需要政、产、学、研、用多方面共同努力,逐步完善区块链的技术和应用生态。(投资者报)




[]GitHub活跃度排行榜:EOS跃居第二,BTC排名第二十一[/]



据CryptoMiso数据,过去3个月内GitHub代码活跃度排名前十的分别为:LSK、EOS、SAN、KMD、GNT、ZRX、RHOC、KNC、TRX和BURST。全部上榜的329个币种中,BTC排名第21,ETC排名第33,ETH排名第30,XRP排名第94,LTC排名第129。(华尔街见闻)




[]Bittrex将于3月9日起停止为朝鲜等5个地区投资者提供服务[/]



总部位于美国拉斯维加斯的数字货币交易所Bittrex,预计将于3月9日起正式停止为朝鲜、伊朗、克里米亚地区、叙利亚和古巴的投资者提供交易服务。伊朗交易者对此表示,美国利用比特币的流动性抑制全世界人民的需求,以此达到他们自己的政治利益,这不是比特币和区块链的意义所在,它们违背了这个系统的精神。(Bitcoin)




[]渣打集团董事会主席:未来央行推出法定数字货币在意料之中[/]



渣打集团董事会主席韦浩思在接受采访时表示,“如果未来央行和监管者都采取措施,提供一个发展加密货币的框架我并不会感到意外”。韦浩思称许多央行都对推广加密货币很感兴趣,加密货币与法定货币可以相互联系,但需要在央行的控制之下。(一财)




[]社保基金理事会原副理事长:大数据、区块链等新技术有助于解决养老问题[/]



3日,在中国养老金融50人论坛北京峰会上,社保基金理事会原副理事长王忠民指出,“区块链可以解决信息紊乱、信息不负责任,信息纠结和信息扭曲。如果这个时代到来,真正用新技术新产品新市场解决我们今天养老社会保障中的综合问题和基础逻辑层面的问题。”(21世纪经济报道) 查看全部
Hi,everybody!


这是3月5日的每日1句话新闻,只需1分钟,看看全球最热、最新的区块链新闻。
观点




李鸣:区块链有望成为各行业基础设施 统一标识与监管缺失等难题待解

渣打集团董事会主席:未来央行推出法定数字货币在意料之中

社保基金理事会原副理事长:大数据、区块链等新技术有助于解决养老问题
全球




EOS创始人Daniel larimer澄清:离开EOS是谣言

两会代表委员关注区块链:多场景和防炒作成关键词

Bittrex将于3月9日起停止为朝鲜等5个地区投资者提供服务


企业


SEC已向80家数字货币公司发出传票

酷我音乐:区块链产品内测不实,没有ICO计划

区块链公司布比完成1亿元A轮融资,深耕“区块链+供应链金融”


趋势


GitHub活跃度排行榜:EOS跃居第二,BTC排名第二十一







恭喜你,今天的新闻全部看完啦。1分钟链圈事,周一打卡成功。
想看详细信息?以下1分钟,让你了解个透!




    []两会代表委员关注区块链:多场景和防炒作成关键词[/]




多位两会代表委员们纷纷建言区块链应用场景并肯定区块链技术的革命性意义,防止炒作也是业界共同关心的话题。张近东、俞敏洪、周鸿祎、李彦宏、马化腾、丁磊等均在建言之列。“两会”有关区块链的建言聚焦在如何落地应用场景尤其是数字货币、目前区块链的发展阶段以及如何防炒作三个方面。(界面)




    []EOS创始人Daniel larimer澄清:离开EOS是谣言[/]




EOS创始人Daniel larimer在EOS电报群中亲自澄清:“关于我会离开EOS的新闻是谣言,我会一直在Block.One和EOS团队。”
    []SEC已向80家数字货币公司发出传票[/]




美国证券交易委员会(SEC)已向80家数字货币公司发出传票,包括TechCrunch创始人Michael Arrington。SEC主席Jay Clayton表示,SEC正在为ICO市场投入大量资源,并在夏季警告中发布了关于ICO构成危险的投资者公告。华盛顿分析公司高级金融服务政策分析师Ryan Schoen认为,涉及交易未经注册证券的交易所可能是SEC审查的重点。(CNBC)





    []酷我音乐:区块链产品内测不实,没有ICO计划[/]




酷我音乐声明称,网络上出现的“酷我音乐区块链非公开内测”的消息不实。酷我音乐表示,未来会持续关注区块链技术 ,没有任何形式的ICO计划,公司将严格遵守相关法律法规。近日有消息称,酷我音乐推出了首款音乐大众区块链产品“酷链钱包”。(Bianews)




    []区块链公司布比完成1亿元A轮融资,深耕“区块链+供应链金融”[/]




新业态区块链公司布比已于2017年11月完成1亿元人民币A轮融资,由新链创投、盘古创富、博将资本、长江国弘、步长集团等多家机构投资,前几轮投资机构启赋资本、招商局创投、界石投资、万向分布式资本、点亮资本全部继续跟投。布比公司表示,此次融资主要用于技术研发和市场运营。(36氪)




    []李鸣:区块链有望成为各行业基础设施 统一标识与监管缺失等难题待解[/]




中国电子技术标准化研究院区块链研究室主任李鸣表示,未来区块链行业会与IT行业一样,与应用场景相融合,成为信任的连接器和价值传递的技术保障,成为所有行业发展的必要基础设施。不过监管框架的缺失、新型技术安全、多种技术体系、标准规范的缺乏等问题,对区块链应用落地提出了很多挑战,需要政、产、学、研、用多方面共同努力,逐步完善区块链的技术和应用生态。(投资者报)




    []GitHub活跃度排行榜:EOS跃居第二,BTC排名第二十一[/]




据CryptoMiso数据,过去3个月内GitHub代码活跃度排名前十的分别为:LSK、EOS、SAN、KMD、GNT、ZRX、RHOC、KNC、TRX和BURST。全部上榜的329个币种中,BTC排名第21,ETC排名第33,ETH排名第30,XRP排名第94,LTC排名第129。(华尔街见闻)




    []Bittrex将于3月9日起停止为朝鲜等5个地区投资者提供服务[/]




总部位于美国拉斯维加斯的数字货币交易所Bittrex,预计将于3月9日起正式停止为朝鲜、伊朗、克里米亚地区、叙利亚和古巴的投资者提供交易服务。伊朗交易者对此表示,美国利用比特币的流动性抑制全世界人民的需求,以此达到他们自己的政治利益,这不是比特币和区块链的意义所在,它们违背了这个系统的精神。(Bitcoin)




    []渣打集团董事会主席:未来央行推出法定数字货币在意料之中[/]




渣打集团董事会主席韦浩思在接受采访时表示,“如果未来央行和监管者都采取措施,提供一个发展加密货币的框架我并不会感到意外”。韦浩思称许多央行都对推广加密货币很感兴趣,加密货币与法定货币可以相互联系,但需要在央行的控制之下。(一财)




    []社保基金理事会原副理事长:大数据、区块链等新技术有助于解决养老问题[/]




3日,在中国养老金融50人论坛北京峰会上,社保基金理事会原副理事长王忠民指出,“区块链可以解决信息紊乱、信息不负责任,信息纠结和信息扭曲。如果这个时代到来,真正用新技术新产品新市场解决我们今天养老社会保障中的综合问题和基础逻辑层面的问题。”(21世纪经济报道)

【区块链108将】Kcash创始人祝雪娇:互联网行业巨头很难碾压创业团队 这是最大的机会

开源讨论wangyin 发表了文章 • 0 个评论 • 114 次浏览 • 2018-03-21 16:07 • 来自相关话题

尽管数字货币市场快速发展,但对于数字货币的存储和管理,仍然没有很好的解决方案。面对越来越多的数字货币种类,用户要么是针对不同类型的数字货币,安装不同的去中心化钱包分别管理;要么是索性放在中心化钱包或者交易所里,让中心机构代为管理。前者带来了极大不便,后者又存在一定的安全隐患。如何更好的兼顾安全性和便利性,使用户面临的一个难题。


其次,数字货币的交易和兑换,主要通过交易所完成,非专业用户来要进行严格的实名身份认证、学习相关流程和操作步骤、充值提现又需要先兑换为法币等,门槛较高。

带着这些问题,耳朵财经独家专访Kcash钱包创始人祝雪娇,听他讲讲数字钱包那些事。
(以下为采访实录,耳朵财经略有删减)

Q:你能简单介绍一下咱们Kcash的项目和团队构成吗?

Kcash创始人祝雪娇:Kcash是一款多链的数字货币的钱包应用,也是一站式数字资产管理平台,今年我们会上线我们自己的区块链公链,相当于是一个金融服务类的生态平台。团队将近30个人,目前我们努力在海外搭建运营和技术团队,技术人员占比大概70%。我本人是清华的本硕,2013年开始全职做比特币。合伙人刘锟毕业于北京大学,有8年互联网产品从业经验,在传统支付和区块链领域都有深入的研究和实践。

Q:是什么原因驱动着咱们做一个钱包项目?

Kcash创始人祝雪娇:主要因为我们对区块链和数字货币领域比较感兴趣,我们认为这可能是下一个像互联网那么大的机会,我们赶上了这么一个浪潮于是就决定全资金投入干这个事儿。

Q:现在币的种类特别多,咱们现在都支持哪些数字货币?

Kcash创始人祝雪娇:现在我们主流都支持了,像BTC、BCC、ETH、ETC,还有基于ETH上的ERC20的币,基本上大部分都支持了。

Q:现在出现了一些分叉币,不知道分叉币怎么解决?

Kcash创始人祝雪娇:2017年11、12月份的时候产生了大量的分叉币,大概七八十种。有些币纯粹是口头发行,因为每一个币都应该有自己的主链,但是分叉币大部分都没有开发出自己的主链,比较扯淡。一般主链上线以后表现比较稳定,社区达到一定水平的话,我们都会考虑去支持。

Q:最近也听到很多钱包被盗的这种信息,咱们从技术方向做了哪些优化和加强?

Kcash创始人祝雪娇: 首先我们是一个去中心化的钱包,这个设计架构就避免了服务器被盗或者被黑的风险,所以说币存在里面,只要私钥保存完好是不会丢币的。目前钱包被盗的大概分几个情况,一是很多钱包是中心化钱包,那就跟交易所被黑一样,因为服务器存在风险。另一个原因可能是由于用户管理自己的账户和密码不严谨。

Q:能详细解释下咱们在安全领域的技术铺垫吗?

Kcash创始人祝雪娇: 举个例子,我们保护一个人的资产通过他设置的密码,加上我们随机的一个密码,再加上系统一个特定的标识,然后经过加密形式分散到储存系统,这些都是不太容易被黑到的地方。如果真的有一些黑客程序攻击你的APP,由于我们把资料拆开成多个部分存在不同地方,所以黑客需要反编译我们的地址,这非常难。即便你把手机交到别人手里,也需要是一个非常专业的人士,才有可能破译这些程序导致丢币。

Q: 那你觉得区块链技术对资产安全保障有哪些提高吗?之前一些钱包或者APP也出现过这种危险。

Kcash创始人祝雪娇: 对,这种情况很多,我们是从2013年底就开始做这个产品,所以说我们在趟过的坑比较多经验也是比较充足。再者我们的设计架构不仅是简单的去中心化,我们把用户的密钥进行多重加密,储存在本地同时也会存在其他地方,这样就有效的避免就是我们的被黑的风险。

Q:Kcash钱包发布以来的用户量和活跃度方便说吗?

Kcash创始人祝雪娇:我们在春节前已经达到20万用户,周活大概40%。春节期间我们也做了大量的推广活动,现在大概有40万用户。

Q: 资料显示咱们已经和Visa、Mastercard合作?未来会接入哪些更便捷的支付渠道?比如说微信、支付宝或者其他?

Kcash创始人祝雪娇:我们和VISA、Mastercard的合作与传统的支付合作可能有点不太一样,我们是直接发一张VISA的卡,相当于我们是一个发卡方了,直接打通数字货币和法币屏障,接下来会在东南亚地区有一些新的发卡方合作。微信、支付宝的合作可能涉及的问题比较多,我们也在考虑。

Q: 提到东南亚,介绍一下咱们海外发展的计划吧?

Kcash创始人祝雪娇: 今年的计划主要是在日本、韩国、新加坡、越南这几个地方去做大量的用户推广和支付场景落地。另外也会在这几个东南地区和美国建立我们的运营、推广团队,招募一些管理者。

Q: 有一种言论认为比特币和以太坊这种数字货币是泡沫,不知道你怎么看这种说法?或者说你怎么评价数字货币?

Kcash创始人祝雪娇:咱们对比近两三百年每一次大的技术进步来看,其实某种角度来说都是资产泡沫推动的。从最早的铁路运输开始,因为当时修铁路很贵,资本力量进入去炒泡沫之后,形成了大家集资去修铁路的一个结果,才有了后来铁轨上的经济飞跃。到后来大家说互联网是泡沫,但如果现在我们回头看,那个泡沫吸引了更多的资本、人才,这样才加速这个产业的发展。对区块链领域也是一样的,它带来最大的革新就是认知上的革新,以前是中心化的思想现在强调去中心化,同时有一个技术手段能实现这个目的,这就带来一个巨大的产业。一个新兴产业的兴起是必须要资本推动,泡沫能起到吸引资本和资源的作用。

Q: 现在币的价格越来越高,很多人冲进来捞一波快钱,你怎么看待这种投机的行为?

Kcash创始人祝雪娇: 是这样的,投资和投机只有一线之隔,投资可能看重的是这个行业未来更大的发展,获取高额的、稳定的收益;投机可能是短期获取这个收益。就跟九几年中国的股票市场一样,当时也有很多人疯狂的冲进股市做短线交易,做一些投机的事,这个事是避免不了的。

但从行业角度来看,这种投机行为只是整个行业发展的一个小插曲而已,因为他们虽然在短时间内获取了一个比较高额的收益,但是在长期来看,投机者实际上是会被淘汰掉。但也正是他们的加入,加速了整个行业的扩张,2017年很多投机客进入这个行业以后,才使得这个行业发展得足够快,获得足够的认知。

像2015年的时候大家谈区块链,可能全球都没有几个声音,而现在你说出这几个词很多国家、政府都在参与,说明这一场资本运动是非常有利的,这些人起到了加速行业发展的作用。

Q:我了解到2017年也出现一些咱们俗称空气币的项目,换句话说就是坑害了不少投资者。

Kcash创始人祝雪娇: 像这种高风险投资应该是有资格的投资人去从事的行为,就像股票市场、融资市场一样,需要VC机构这样专业的人去做。现在这个市场比较早期,目前也需要监管部门帮助大家设定一些门槛,把一些不合格的投资人挡在外面。

Q:但是现在看来区块链技术更多应用在代币上,其他地方没有太多的应用和落地。

Kcash创始人祝雪娇:我觉得就一个行业发展需要几个步骤,第一步就是区块链本身诞生,它是由于比特币诞生了才逐渐走入大家视野,作为金融领域的新鲜事物区块链比传统的金融工具效率高了一个数量级。第二步当基础设施完善的时候,就会基于区块链诞生更新的商业模式。举个例子,互联网刚兴起的时候,那个时候网络普遍很慢,如果当时想做个淘宝、京东,肯定是不可能成功的,只有网络、网速、个人电脑、快递物流这些基础设施完善到了一定程度,这个商业模式才可行。所以其实现在来评价商业模式有点过早。

Q: 除了金融以外,你觉得今年区块链最快能应用落地在哪个领域呢?

Kcash创始人祝雪娇: 除了说金融的话,我们认为在确权、版权、征信这几个方向也有可能,还有在一些开放式、中心化的作业上,比如说团队运营管理等,可能会有一些比较有意思的模式出现。

Q:有人说区块链解决了行业的痛点,也有人说区块链会颠覆现有的一些产业模式,你怎么看这些说法?

Kcash创始人祝雪娇:我觉得说颠覆可能是不太准确,我一直认为区块链创造了一个新的产业维度。这个产业里最有意思的不是去改造已有的互联网企业,而是在现有产业上诞生新的商业模式。就像互联网刚兴起的时候,如果只是把以前的传统企业和商业模式纯粹互联网化,其实是没有前途的。现在也很难说它有颠覆性的应用,但我们一直认为在这个结构下一定会有超前的商业模式出现,这才是区块链的价值,而不是纯粹把以前的一些模式去区块链化,那是没有意义的。

Q: 最近很多上市公司都宣布布局区块链,包括蚂蚁金服也频繁发声,你怎么看巨头在新兴领域的快速切入?

Kcash创始人祝雪娇:有些上市公司有可能去炒概念,我们都知道中国A股或者全球股票市场都会有炒概念的行为,目的就是股价和市值。

像阿里、腾讯、百度这些公司其实内部很早就开始做区块链技术的研发,只是可能受限于政策、技术成熟度等因素,没有大面积对外去推广。因为这是一个新兴的维度,他们不可能完全视而不见,不可能不布局。特别是在这个产业上,整个数字货币的市值已经排在全球国家货币二三十位这个水平,如果这还视而不见的话,那肯定是战略失误。

Q:但是巨头进来之后对很多创业者会有影响,之前一些风口到来的时候巨头一旦加入竞争很多创业公司就很难生存。

Kcash创始人祝雪娇:对,这也是行业里比较有意思的地方,现在巨头对这些创业团队其实形不成碾压。阿里巴巴、腾讯几十亿上百亿的市值,现在创业者所做的数量对他们而言太小了,所以他们完全转型的可能性也不大。再者像阿里、腾讯已经形成某种意义上的垄断,而区块链是去中心化的一个思想,让他们完全革自己的命也是很难去完成的。另外还有一些政策原因,他们不太可能在政策没有完全明朗情况下投入全部资金投资干这件事,所以对于创业团队来说这是个最大的机会。 查看全部
尽管数字货币市场快速发展,但对于数字货币的存储和管理,仍然没有很好的解决方案。面对越来越多的数字货币种类,用户要么是针对不同类型的数字货币,安装不同的去中心化钱包分别管理;要么是索性放在中心化钱包或者交易所里,让中心机构代为管理。前者带来了极大不便,后者又存在一定的安全隐患。如何更好的兼顾安全性和便利性,使用户面临的一个难题。


其次,数字货币的交易和兑换,主要通过交易所完成,非专业用户来要进行严格的实名身份认证、学习相关流程和操作步骤、充值提现又需要先兑换为法币等,门槛较高。

带着这些问题,耳朵财经独家专访Kcash钱包创始人祝雪娇,听他讲讲数字钱包那些事。
(以下为采访实录,耳朵财经略有删减)

Q:你能简单介绍一下咱们Kcash的项目和团队构成吗?

Kcash创始人祝雪娇:Kcash是一款多链的数字货币的钱包应用,也是一站式数字资产管理平台,今年我们会上线我们自己的区块链公链,相当于是一个金融服务类的生态平台。团队将近30个人,目前我们努力在海外搭建运营和技术团队,技术人员占比大概70%。我本人是清华的本硕,2013年开始全职做比特币。合伙人刘锟毕业于北京大学,有8年互联网产品从业经验,在传统支付和区块链领域都有深入的研究和实践。

Q:是什么原因驱动着咱们做一个钱包项目?

Kcash创始人祝雪娇:主要因为我们对区块链和数字货币领域比较感兴趣,我们认为这可能是下一个像互联网那么大的机会,我们赶上了这么一个浪潮于是就决定全资金投入干这个事儿。

Q:现在币的种类特别多,咱们现在都支持哪些数字货币?

Kcash创始人祝雪娇:现在我们主流都支持了,像BTC、BCC、ETH、ETC,还有基于ETH上的ERC20的币,基本上大部分都支持了。

Q:现在出现了一些分叉币,不知道分叉币怎么解决?

Kcash创始人祝雪娇:2017年11、12月份的时候产生了大量的分叉币,大概七八十种。有些币纯粹是口头发行,因为每一个币都应该有自己的主链,但是分叉币大部分都没有开发出自己的主链,比较扯淡。一般主链上线以后表现比较稳定,社区达到一定水平的话,我们都会考虑去支持。

Q:最近也听到很多钱包被盗的这种信息,咱们从技术方向做了哪些优化和加强?

Kcash创始人祝雪娇: 首先我们是一个去中心化的钱包,这个设计架构就避免了服务器被盗或者被黑的风险,所以说币存在里面,只要私钥保存完好是不会丢币的。目前钱包被盗的大概分几个情况,一是很多钱包是中心化钱包,那就跟交易所被黑一样,因为服务器存在风险。另一个原因可能是由于用户管理自己的账户和密码不严谨。

Q:能详细解释下咱们在安全领域的技术铺垫吗?

Kcash创始人祝雪娇: 举个例子,我们保护一个人的资产通过他设置的密码,加上我们随机的一个密码,再加上系统一个特定的标识,然后经过加密形式分散到储存系统,这些都是不太容易被黑到的地方。如果真的有一些黑客程序攻击你的APP,由于我们把资料拆开成多个部分存在不同地方,所以黑客需要反编译我们的地址,这非常难。即便你把手机交到别人手里,也需要是一个非常专业的人士,才有可能破译这些程序导致丢币。

Q: 那你觉得区块链技术对资产安全保障有哪些提高吗?之前一些钱包或者APP也出现过这种危险。

Kcash创始人祝雪娇: 对,这种情况很多,我们是从2013年底就开始做这个产品,所以说我们在趟过的坑比较多经验也是比较充足。再者我们的设计架构不仅是简单的去中心化,我们把用户的密钥进行多重加密,储存在本地同时也会存在其他地方,这样就有效的避免就是我们的被黑的风险。

Q:Kcash钱包发布以来的用户量和活跃度方便说吗?

Kcash创始人祝雪娇:我们在春节前已经达到20万用户,周活大概40%。春节期间我们也做了大量的推广活动,现在大概有40万用户。

Q: 资料显示咱们已经和Visa、Mastercard合作?未来会接入哪些更便捷的支付渠道?比如说微信、支付宝或者其他?

Kcash创始人祝雪娇:我们和VISA、Mastercard的合作与传统的支付合作可能有点不太一样,我们是直接发一张VISA的卡,相当于我们是一个发卡方了,直接打通数字货币和法币屏障,接下来会在东南亚地区有一些新的发卡方合作。微信、支付宝的合作可能涉及的问题比较多,我们也在考虑。

Q: 提到东南亚,介绍一下咱们海外发展的计划吧?

Kcash创始人祝雪娇: 今年的计划主要是在日本、韩国、新加坡、越南这几个地方去做大量的用户推广和支付场景落地。另外也会在这几个东南地区和美国建立我们的运营、推广团队,招募一些管理者。

Q: 有一种言论认为比特币和以太坊这种数字货币是泡沫,不知道你怎么看这种说法?或者说你怎么评价数字货币?

Kcash创始人祝雪娇:咱们对比近两三百年每一次大的技术进步来看,其实某种角度来说都是资产泡沫推动的。从最早的铁路运输开始,因为当时修铁路很贵,资本力量进入去炒泡沫之后,形成了大家集资去修铁路的一个结果,才有了后来铁轨上的经济飞跃。到后来大家说互联网是泡沫,但如果现在我们回头看,那个泡沫吸引了更多的资本、人才,这样才加速这个产业的发展。对区块链领域也是一样的,它带来最大的革新就是认知上的革新,以前是中心化的思想现在强调去中心化,同时有一个技术手段能实现这个目的,这就带来一个巨大的产业。一个新兴产业的兴起是必须要资本推动,泡沫能起到吸引资本和资源的作用。

Q: 现在币的价格越来越高,很多人冲进来捞一波快钱,你怎么看待这种投机的行为?

Kcash创始人祝雪娇: 是这样的,投资和投机只有一线之隔,投资可能看重的是这个行业未来更大的发展,获取高额的、稳定的收益;投机可能是短期获取这个收益。就跟九几年中国的股票市场一样,当时也有很多人疯狂的冲进股市做短线交易,做一些投机的事,这个事是避免不了的。

但从行业角度来看,这种投机行为只是整个行业发展的一个小插曲而已,因为他们虽然在短时间内获取了一个比较高额的收益,但是在长期来看,投机者实际上是会被淘汰掉。但也正是他们的加入,加速了整个行业的扩张,2017年很多投机客进入这个行业以后,才使得这个行业发展得足够快,获得足够的认知。

像2015年的时候大家谈区块链,可能全球都没有几个声音,而现在你说出这几个词很多国家、政府都在参与,说明这一场资本运动是非常有利的,这些人起到了加速行业发展的作用。

Q:我了解到2017年也出现一些咱们俗称空气币的项目,换句话说就是坑害了不少投资者。

Kcash创始人祝雪娇: 像这种高风险投资应该是有资格的投资人去从事的行为,就像股票市场、融资市场一样,需要VC机构这样专业的人去做。现在这个市场比较早期,目前也需要监管部门帮助大家设定一些门槛,把一些不合格的投资人挡在外面。

Q:但是现在看来区块链技术更多应用在代币上,其他地方没有太多的应用和落地。

Kcash创始人祝雪娇:我觉得就一个行业发展需要几个步骤,第一步就是区块链本身诞生,它是由于比特币诞生了才逐渐走入大家视野,作为金融领域的新鲜事物区块链比传统的金融工具效率高了一个数量级。第二步当基础设施完善的时候,就会基于区块链诞生更新的商业模式。举个例子,互联网刚兴起的时候,那个时候网络普遍很慢,如果当时想做个淘宝、京东,肯定是不可能成功的,只有网络、网速、个人电脑、快递物流这些基础设施完善到了一定程度,这个商业模式才可行。所以其实现在来评价商业模式有点过早。

Q: 除了金融以外,你觉得今年区块链最快能应用落地在哪个领域呢?

Kcash创始人祝雪娇: 除了说金融的话,我们认为在确权、版权、征信这几个方向也有可能,还有在一些开放式、中心化的作业上,比如说团队运营管理等,可能会有一些比较有意思的模式出现。

Q:有人说区块链解决了行业的痛点,也有人说区块链会颠覆现有的一些产业模式,你怎么看这些说法?

Kcash创始人祝雪娇:我觉得说颠覆可能是不太准确,我一直认为区块链创造了一个新的产业维度。这个产业里最有意思的不是去改造已有的互联网企业,而是在现有产业上诞生新的商业模式。就像互联网刚兴起的时候,如果只是把以前的传统企业和商业模式纯粹互联网化,其实是没有前途的。现在也很难说它有颠覆性的应用,但我们一直认为在这个结构下一定会有超前的商业模式出现,这才是区块链的价值,而不是纯粹把以前的一些模式去区块链化,那是没有意义的。

Q: 最近很多上市公司都宣布布局区块链,包括蚂蚁金服也频繁发声,你怎么看巨头在新兴领域的快速切入?

Kcash创始人祝雪娇:有些上市公司有可能去炒概念,我们都知道中国A股或者全球股票市场都会有炒概念的行为,目的就是股价和市值。

像阿里、腾讯、百度这些公司其实内部很早就开始做区块链技术的研发,只是可能受限于政策、技术成熟度等因素,没有大面积对外去推广。因为这是一个新兴的维度,他们不可能完全视而不见,不可能不布局。特别是在这个产业上,整个数字货币的市值已经排在全球国家货币二三十位这个水平,如果这还视而不见的话,那肯定是战略失误。

Q:但是巨头进来之后对很多创业者会有影响,之前一些风口到来的时候巨头一旦加入竞争很多创业公司就很难生存。

Kcash创始人祝雪娇:对,这也是行业里比较有意思的地方,现在巨头对这些创业团队其实形不成碾压。阿里巴巴、腾讯几十亿上百亿的市值,现在创业者所做的数量对他们而言太小了,所以他们完全转型的可能性也不大。再者像阿里、腾讯已经形成某种意义上的垄断,而区块链是去中心化的一个思想,让他们完全革自己的命也是很难去完成的。另外还有一些政策原因,他们不太可能在政策没有完全明朗情况下投入全部资金投资干这件事,所以对于创业团队来说这是个最大的机会。

项目空投结束前后的行情讨论:从洋葱币DeepOnion谈起

开源讨论wangyin 发表了文章 • 0 个评论 • 115 次浏览 • 2018-03-21 16:01 • 来自相关话题

不利因素:

当前一部分大户囤积大量洋葱币,目的在于获得巨额空投。空投结束前后,这些人已经开始减仓套利,体现在当前下跌的币价;

当前部分用户为了获得空投,在各个论坛极力推洋葱币。当空投结束之后,各个论坛关于深度洋葱的讨论热度会降低。

有利因素:

最后一次空投是4月底,按照roadmap,届时洋葱币项目本身有了很大的进展,如纸钱包、Android和iOS钱包、DeepVault 、DeepOnion Vote Central、广告发言人、新的交易平台、接受洋葱币的商户和游戏项目,以及当前正在测试的隐私功能DeepSend应该也已经集成到洋葱币的最新代码中。洋葱币本身到那个时候已经是一个相当不错的匿名币项目,不少人会看好。

洋葱币大户对洋葱币的资金投入不算多,没有太多成本负担。而且过早大量抛售洋葱币对洋葱币发展极为不利,他们不会这么傻,去损害大家对洋葱币的信心。而且,这些大户比普通散户更有耐心,他们想要的是洋葱币的长期发展。

不少新的山寨币和代币,最初阶段比洋葱币集中得多,而发生大量抛售的例子很少。而且洋葱币有相当不错的发展前景,更不会发生集中抛售的情况。

众所周知,一些论坛对洋葱币进行了封锁。当空投结束,这种封锁将会逐步解除。对洋葱币的长期宣传是有利的。

某些交易平台,不愿意上线正在空投的币种。待空投结束后,洋葱币可以选择上线更多的交易平台。

社区向心力强,各种功能、服务很完善,团队也很给力,这种优势是不少山寨币不能比的。

DeepOnion Vote Central功能运行后,社区参与度更高,洋葱币也将会开发集成更被期待的功能。

洋葱币的市值太小,还有很大的增长空间。

洋葱币的价格下跌,很大一部分原因是比特币价格下跌造成的,受当前熊市影响大,而非自身造成的。

结论:抛售洋葱不是明智之举,价格下跌是暂时的,洋葱币很有潜力,因此大家不应过于担心。 查看全部
不利因素:

当前一部分大户囤积大量洋葱币,目的在于获得巨额空投。空投结束前后,这些人已经开始减仓套利,体现在当前下跌的币价;

当前部分用户为了获得空投,在各个论坛极力推洋葱币。当空投结束之后,各个论坛关于深度洋葱的讨论热度会降低。

有利因素:

最后一次空投是4月底,按照roadmap,届时洋葱币项目本身有了很大的进展,如纸钱包、Android和iOS钱包、DeepVault 、DeepOnion Vote Central、广告发言人、新的交易平台、接受洋葱币的商户和游戏项目,以及当前正在测试的隐私功能DeepSend应该也已经集成到洋葱币的最新代码中。洋葱币本身到那个时候已经是一个相当不错的匿名币项目,不少人会看好。

洋葱币大户对洋葱币的资金投入不算多,没有太多成本负担。而且过早大量抛售洋葱币对洋葱币发展极为不利,他们不会这么傻,去损害大家对洋葱币的信心。而且,这些大户比普通散户更有耐心,他们想要的是洋葱币的长期发展。

不少新的山寨币和代币,最初阶段比洋葱币集中得多,而发生大量抛售的例子很少。而且洋葱币有相当不错的发展前景,更不会发生集中抛售的情况。

众所周知,一些论坛对洋葱币进行了封锁。当空投结束,这种封锁将会逐步解除。对洋葱币的长期宣传是有利的。

某些交易平台,不愿意上线正在空投的币种。待空投结束后,洋葱币可以选择上线更多的交易平台。

社区向心力强,各种功能、服务很完善,团队也很给力,这种优势是不少山寨币不能比的。

DeepOnion Vote Central功能运行后,社区参与度更高,洋葱币也将会开发集成更被期待的功能。

洋葱币的市值太小,还有很大的增长空间。

洋葱币的价格下跌,很大一部分原因是比特币价格下跌造成的,受当前熊市影响大,而非自身造成的。

结论:抛售洋葱不是明智之举,价格下跌是暂时的,洋葱币很有潜力,因此大家不应过于担心。

密码学、数字签名与比特币

技术交流wangyin 发表了文章 • 0 个评论 • 112 次浏览 • 2018-03-21 15:56 • 来自相关话题

“ 让我们创造一片新的国土,将那些物质的控制者阻拦在外;为了跟随我们,进入我们的领地,他们将耗尽无尽的资源。”

想要了解比特币中的数字签名,就必须先了解一点密码学知识。

01 
— 
从密码学说起

对谍战片感兴趣的朋友可能听说过密码学,这是一门将数学应用于加密数据和解密数据的科学。利用这门科学,我们可以确保只有信息接收者才能看到信息内容。

具体来说我们根据一定的加密算法,用密钥将明文加密为密文,随后由接收方再使用加密算法和密钥从密文中解密出明文。

传统密码学中,发送方和接受方使用的加密算法和密钥是相同的,因此这类加密算法被称为“对称加密算法”。

历史上一个有名的对称加密算法是凯撒算法,据传说是凯撒大帝用来保护军事信息用的。

凯撒算法很简单。假设收发双方约定密钥为 4,则发送方将明文中的每一个字母用字母表中与其相隔三位的字母替代,即 A 变为 E,B 变为 F,”HELLO” 变为 “LIPPS”。

这种加密方法看起来非常简单,通常攻击者能够从语言学角度找到重复的字母,推断出密钥。

但这类移位算法经过一代代密码学家的增强,最终在二战时期进化为德军的恩尼格玛(Enigma)。

恩尼格玛是二战德军使用的机械加解密机器,其加密原理基于“复式移位替换法”。

同一个字母在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,又可以代表明文中的不同字母。这使得恩尼格玛产生的密文在没有计算机的年代其密文很难被破译。

今天被广泛使用的对称加密算法是 AES(Advanced Encryption Standard),由美国国家标准与技术研究所于2001年建立。使用 128 bits 密钥的 AES 算法被认为足以免于暴力破解法的攻击。

对称加密算法能够保护机密信息不被窥探,但这种算法要求收发双方拥有相同的密钥。

在某些情况下,收发双方无法分享密钥。例如,当收发双方在一个可能受到监听的环境中时,其发送密钥的通道可能被截获,导致密文被破译。

因此一些密码学家开始研究如何在不安全信道上进行密钥交换。

02 
— 
迪菲-赫尔曼密钥交换协议

为了安全地交换密钥,惠特菲尔德·迪菲和马丁·赫尔曼在 1976 年发表了迪菲-赫尔曼密钥交换协议。

简单来说,假设 Alice 要给 Bob 发送一个密文。为了让 Bob 能够解密, Alice 还需要发送密钥给 Bob。

首先,Alice 和 Bob 各自选择一个足够大的素数 x 、 y。

然后 Alice 和 Bob 约定两个数 g 、 n,这两个数可以公开给所有人。

Alice 计算 g^x mod n 并告知 Bob 结果,Bob 计算 g^y mod n 并告知 Alice 结果。

这样双方就知道密钥为 g^(xy) mod n = (g^y mod n)^x mod n = (g^x mod n)^y mod n。

使用这个对称密钥,Alice 和 Bob 就可以进行安全的加密通讯。

为了破解这个密钥,攻击者必须实验所有的 g^(x*y) mod n 的可能值。当 n 是一个至少 600 位的素数时,就能够保证该对称密钥的安全性。

交换协议解决了如何在不安全信道上交换密钥的问题。但是它要求收发双方必须同时在线,才能生成对称密钥。另外交换协议中还无法保证和 Alice 进行密钥交换的是真正的 Bob,而不是其他人。

03 
— 
公开密钥加密算法

公开密钥加密算法,也被称为非对称加密算法。

该算法的加密过程需要两个密钥,一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文。由于加密和解密需要两个不同的密钥,故被称为非对称加密。

虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个。

其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格保管,不能向向任何人提供,也不需要透露给要通信的另一方。

公开密钥加密算法的关键在于公钥私钥生成,因此通常都根据数学难题设计公钥私钥。常用的三个难题为:质数分解,离散对数和椭圆曲线问题。

例如被广泛使用的 RSA 算法就是基于极大整数因数分解难题设计的。

下面演示一下简化版的 RSA 加密解密流程:

Alice 随意选择两个素数(实际使用中会使用足够长的素数)p = 11 和 q = 13。

p 和 q 的模数为 n = p q = 143,其欧拉函数值为 r = (p-1) = 120。

接下来是公钥私钥生成。公钥是从小于 r 且与 r 互质的数中选择一个数字,例如 e = 7。私钥则是 e 关于 r 的模反元素。

根据扩展欧几里得算法可以计算出私钥 d = 103,可以验证 e [i] d = 7 103 = 721,721 与 1 关于 120 同余。

此时对于 Alice 来说,其公钥为(n, e),私钥为(n, d)。

当 Bob 要向 Alice 传递信息时,那么 Bob 首先要获取 Alice 的公钥,然后 Bob 开始加密信息。

假设发送信息为 m = 9(实际中双方按照约定格式将信息转为一个小于 n 且与 n 互质的整数形式)。

则加密后的密文为 c = m^e mod n = 9^7 mod 143 = 48。

Alice 收到密文后用自己的私钥解密。 c^d mod n = 48^103 mod 143 = 9。

当攻击者获得 Alice 的公钥(n, e) 以及密文 c 时,他无法直接获取到私钥(n, d)。获得 d 的最简单方法是将 n 分解为 p 和 q。只要人类无法改进对极大整数进行因数分解的算法,那么用足够长(4096位或以上) RSA 公钥加密的信息就可以被认为是无法破解的。

当然,实际使用要比理论上复杂得多。例如,非对称加密通常要比对称加密算法计算复杂、性能差,一般会先用对称加密算法生成密文,再由非对称加密算法来加密对称密钥。

另外,为了防止中间人攻击,公开密钥加密算法需要由可靠的第三方机构签发数字证书,用来证明公开密钥拥有者的身份。。

除了用于加密,公开密钥加密算法还有一个重要的应用:数字签名。

04 
— 
数字签名

经过以上密码学知识的铺垫,我们初步了解了常见的加密算法。

下面可以思考一个场景,假如你发送一个信息给你的朋友,你该如何证明你是信息发送者,又该如何保证信息在途中没有被第三方修改呢?

这个问题中本聪设计区块链网络时也遇到过:每个节点产生的交易都要发送给其他节点。那么接收节点如何判断这个交易信息是由交易中记录的发送节点发来的?

这种情况下,可以利用公开密钥加密算法来生成发送信息的数字签名,接收方可以通过数字签名判断信息是否可信。

将公开密钥加密算法用于数字签名的步骤与加密解密步骤稍有不同。

假设 Alice 要给 Bob 发送消息。Alice 生成公钥私钥密码对,然后公布该公钥,再将消息哈希值用私钥加密后与消息一同发送给 Bob。

Bob 接收到消息后,就可以用 Alice 公布的公钥来解密得到消息哈希值,这能够表明信息发送方为 Alice。

然后将解密出的哈希值与接收到的哈希值比对,能够检验消息在中途是否被第三方篡改。

数字签名是用于鉴别数字信息所有权的技术,同时还能够提供数字信息完整性的验证。

05 
— 
比特币系统中的数字签名

比特币中使用的公开密钥加密算法是椭圆曲线加密算法(ECDSA)。

当比特币钱包生成新的比特币地址时,它实际上使用椭圆曲线加密算法生成了一对公钥私钥。

公钥私钥对就保存在生成的钱包文件中。生成地址时通常会要求你设置钱包密码,并尽量备份保管好钱包。

比特币系统就像一个巨大的收支账本。它没有记录每个地址里有多少钱,它记录的是每个地址中每次转账记录。

因此,如果你想知道自己一个地址中有多少个比特币,就需要遍历整个区块链,找出所有和这个地址有关的转账记录再计算余额。

当创建一次转账记录时,你需要给其他节点发送转账信息,其中包括用私钥对转账记录签名后的结果和未哈希的公钥。

其他节点接收到你的转账信息后,会从中解析出你的公钥验证数字签名是否有效。

只有当验证过数字签名有效后,接收节点才会将这个转账记录添加到区块的默克尔树上,并执行工作量证明过程。

因此,拥有一个地址对应的私钥,就完全拥有了该地址对应比特币的所有权。保管好自己的私钥至关重要,任何时候都不应该在网络上发送自己的私钥。 查看全部
“ 让我们创造一片新的国土,将那些物质的控制者阻拦在外;为了跟随我们,进入我们的领地,他们将耗尽无尽的资源。”

想要了解比特币中的数字签名,就必须先了解一点密码学知识。

01 
— 
从密码学说起

对谍战片感兴趣的朋友可能听说过密码学,这是一门将数学应用于加密数据和解密数据的科学。利用这门科学,我们可以确保只有信息接收者才能看到信息内容。

具体来说我们根据一定的加密算法,用密钥将明文加密为密文,随后由接收方再使用加密算法和密钥从密文中解密出明文。

传统密码学中,发送方和接受方使用的加密算法和密钥是相同的,因此这类加密算法被称为“对称加密算法”。

历史上一个有名的对称加密算法是凯撒算法,据传说是凯撒大帝用来保护军事信息用的。

凯撒算法很简单。假设收发双方约定密钥为 4,则发送方将明文中的每一个字母用字母表中与其相隔三位的字母替代,即 A 变为 E,B 变为 F,”HELLO” 变为 “LIPPS”。

这种加密方法看起来非常简单,通常攻击者能够从语言学角度找到重复的字母,推断出密钥。

但这类移位算法经过一代代密码学家的增强,最终在二战时期进化为德军的恩尼格玛(Enigma)。

恩尼格玛是二战德军使用的机械加解密机器,其加密原理基于“复式移位替换法”。

同一个字母在明文的不同位置时,可以被不同的字母替换,而密文中不同位置的同一个字母,又可以代表明文中的不同字母。这使得恩尼格玛产生的密文在没有计算机的年代其密文很难被破译。

今天被广泛使用的对称加密算法是 AES(Advanced Encryption Standard),由美国国家标准与技术研究所于2001年建立。使用 128 bits 密钥的 AES 算法被认为足以免于暴力破解法的攻击。

对称加密算法能够保护机密信息不被窥探,但这种算法要求收发双方拥有相同的密钥。

在某些情况下,收发双方无法分享密钥。例如,当收发双方在一个可能受到监听的环境中时,其发送密钥的通道可能被截获,导致密文被破译。

因此一些密码学家开始研究如何在不安全信道上进行密钥交换。

02 
— 
迪菲-赫尔曼密钥交换协议

为了安全地交换密钥,惠特菲尔德·迪菲和马丁·赫尔曼在 1976 年发表了迪菲-赫尔曼密钥交换协议。

简单来说,假设 Alice 要给 Bob 发送一个密文。为了让 Bob 能够解密, Alice 还需要发送密钥给 Bob。

首先,Alice 和 Bob 各自选择一个足够大的素数 x 、 y。

然后 Alice 和 Bob 约定两个数 g 、 n,这两个数可以公开给所有人。

Alice 计算 g^x mod n 并告知 Bob 结果,Bob 计算 g^y mod n 并告知 Alice 结果。

这样双方就知道密钥为 g^(xy) mod n = (g^y mod n)^x mod n = (g^x mod n)^y mod n。

使用这个对称密钥,Alice 和 Bob 就可以进行安全的加密通讯。

为了破解这个密钥,攻击者必须实验所有的 g^(x*y) mod n 的可能值。当 n 是一个至少 600 位的素数时,就能够保证该对称密钥的安全性。

交换协议解决了如何在不安全信道上交换密钥的问题。但是它要求收发双方必须同时在线,才能生成对称密钥。另外交换协议中还无法保证和 Alice 进行密钥交换的是真正的 Bob,而不是其他人。

03 
— 
公开密钥加密算法

公开密钥加密算法,也被称为非对称加密算法。

该算法的加密过程需要两个密钥,一个用作加密,另一个则用作解密。使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文。由于加密和解密需要两个不同的密钥,故被称为非对称加密。

虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另外一个。

其中一个可以公开,称为公钥,任意向外发布;不公开的密钥为私钥,必须由用户自行严格保管,不能向向任何人提供,也不需要透露给要通信的另一方。

公开密钥加密算法的关键在于公钥私钥生成,因此通常都根据数学难题设计公钥私钥。常用的三个难题为:质数分解,离散对数和椭圆曲线问题。

例如被广泛使用的 RSA 算法就是基于极大整数因数分解难题设计的。

下面演示一下简化版的 RSA 加密解密流程:

Alice 随意选择两个素数(实际使用中会使用足够长的素数)p = 11 和 q = 13。

p 和 q 的模数为 n = p q = 143,其欧拉函数值为 r = (p-1) = 120。

接下来是公钥私钥生成。公钥是从小于 r 且与 r 互质的数中选择一个数字,例如 e = 7。私钥则是 e 关于 r 的模反元素。

根据扩展欧几里得算法可以计算出私钥 d = 103,可以验证 e [i] d = 7
103 = 721,721 与 1 关于 120 同余。

此时对于 Alice 来说,其公钥为(n, e),私钥为(n, d)。

当 Bob 要向 Alice 传递信息时,那么 Bob 首先要获取 Alice 的公钥,然后 Bob 开始加密信息。

假设发送信息为 m = 9(实际中双方按照约定格式将信息转为一个小于 n 且与 n 互质的整数形式)。

则加密后的密文为 c = m^e mod n = 9^7 mod 143 = 48。

Alice 收到密文后用自己的私钥解密。 c^d mod n = 48^103 mod 143 = 9。

当攻击者获得 Alice 的公钥(n, e) 以及密文 c 时,他无法直接获取到私钥(n, d)。获得 d 的最简单方法是将 n 分解为 p 和 q。只要人类无法改进对极大整数进行因数分解的算法,那么用足够长(4096位或以上) RSA 公钥加密的信息就可以被认为是无法破解的。

当然,实际使用要比理论上复杂得多。例如,非对称加密通常要比对称加密算法计算复杂、性能差,一般会先用对称加密算法生成密文,再由非对称加密算法来加密对称密钥。

另外,为了防止中间人攻击,公开密钥加密算法需要由可靠的第三方机构签发数字证书,用来证明公开密钥拥有者的身份。。

除了用于加密,公开密钥加密算法还有一个重要的应用:数字签名。

04 
— 
数字签名

经过以上密码学知识的铺垫,我们初步了解了常见的加密算法。

下面可以思考一个场景,假如你发送一个信息给你的朋友,你该如何证明你是信息发送者,又该如何保证信息在途中没有被第三方修改呢?

这个问题中本聪设计区块链网络时也遇到过:每个节点产生的交易都要发送给其他节点。那么接收节点如何判断这个交易信息是由交易中记录的发送节点发来的?

这种情况下,可以利用公开密钥加密算法来生成发送信息的数字签名,接收方可以通过数字签名判断信息是否可信。

将公开密钥加密算法用于数字签名的步骤与加密解密步骤稍有不同。

假设 Alice 要给 Bob 发送消息。Alice 生成公钥私钥密码对,然后公布该公钥,再将消息哈希值用私钥加密后与消息一同发送给 Bob。

Bob 接收到消息后,就可以用 Alice 公布的公钥来解密得到消息哈希值,这能够表明信息发送方为 Alice。

然后将解密出的哈希值与接收到的哈希值比对,能够检验消息在中途是否被第三方篡改。

数字签名是用于鉴别数字信息所有权的技术,同时还能够提供数字信息完整性的验证。

05 
— 
比特币系统中的数字签名

比特币中使用的公开密钥加密算法是椭圆曲线加密算法(ECDSA)。

当比特币钱包生成新的比特币地址时,它实际上使用椭圆曲线加密算法生成了一对公钥私钥。

公钥私钥对就保存在生成的钱包文件中。生成地址时通常会要求你设置钱包密码,并尽量备份保管好钱包。

比特币系统就像一个巨大的收支账本。它没有记录每个地址里有多少钱,它记录的是每个地址中每次转账记录。

因此,如果你想知道自己一个地址中有多少个比特币,就需要遍历整个区块链,找出所有和这个地址有关的转账记录再计算余额。

当创建一次转账记录时,你需要给其他节点发送转账信息,其中包括用私钥对转账记录签名后的结果和未哈希的公钥。

其他节点接收到你的转账信息后,会从中解析出你的公钥验证数字签名是否有效。

只有当验证过数字签名有效后,接收节点才会将这个转账记录添加到区块的默克尔树上,并执行工作量证明过程。

因此,拥有一个地址对应的私钥,就完全拥有了该地址对应比特币的所有权。保管好自己的私钥至关重要,任何时候都不应该在网络上发送自己的私钥。