快讯:
据Cryptocompare数据显示,目前比特币交易情况按照交易币种排名,排在第一的是USDT,占比为64.31%;排在第二的是美元,占比为15.93%;排在第三的是日元,占比为8.33%;排在第四的是欧元,占比为3.19%;排在第五的是QC,占比为2.46%;韩元排在第六,占比为1.97%。
据coinmarketcap数据显示,目前市值前百币种中91涨8跌1平。其中,LTC以4.79%的涨幅领涨市值前十币种。涨幅前三的币种分别为APL(+44.92%),LRC(+21.27.06%)及REP(+19.67%);跌幅前三的币种为LKY(-2.95%),NEXO(-1.40%)及TRX(-1.25%)。
据cointelegraph1月19日报道,研究机构Chainalysis报告指出,暗网活动相对不受比特币价格的影响,并且在价格下跌时不一定会下降。根据报告中的数据,2018年暗网市场比特币的交易与比特币市场表现之间的关系是相反的。去年发送到暗网市场的比特币价值增长了70%。
据Cryptocompare数据显示,目前比特币交易情况按照交易币种排名,排在第一的是USDT,占比为64.31%;排在第二的是美元,占比为15.93%;排在第三的是日元,占比为8.33%;排在第四的是欧元,占比为3.19%;排在第五的是QC,占比为2.46%;韩元排在第六,占比为1.97%。
据coinmarketcap数据显示,目前市值前百币种中91涨8跌1平。其中,LTC以4.79%的涨幅领涨市值前十币种。涨幅前三的币种分别为APL(+44.92%),LRC(+21.27.06%)及REP(+19.67%);跌幅前三的币种为LKY(-2.95%),NEXO(-1.40%)及TRX(-1.25%)。
据cointelegraph1月19日报道,研究机构Chainalysis报告指出,暗网活动相对不受比特币价格的影响,并且在价格下跌时不一定会下降。根据报告中的数据,2018年暗网市场比特币的交易与比特币市场表现之间的关系是相反的。去年发送到暗网市场的比特币价值增长了70%。
据Cryptocompare数据显示,目前比特币交易情况按照交易币种排名,排在第一的是USDT,占比为64.31%;排在第二的是美元,占比为15.93%;排在第三的是日元,占比为8.33%;排在第四的是欧元,占比为3.19%;排在第五的是QC,占比为2.46%;韩元排在第六,占比为1.97%。
据coinmarketcap数据显示,目前市值前百币种中91涨8跌1平。其中,LTC以4.79%的涨幅领涨市值前十币种。涨幅前三的币种分别为APL(+44.92%),LRC(+21.27.06%)及REP(+19.67%);跌幅前三的币种为LKY(-2.95%),NEXO(-1.40%)及TRX(-1.25%)。
据cointelegraph1月19日报道,研究机构Chainalysis报告指出,暗网活动相对不受比特币价格的影响,并且在价格下跌时不一定会下降。根据报告中的数据,2018年暗网市场比特币的交易与比特币市场表现之间的关系是相反的。去年发送到暗网市场的比特币价值增长了70%。
中本聪:智能合约?比特币自带

中本聪:智能合约?比特币自带

前言:写完给身边的程序员朋友看了下,85%表示IQ不够用,并且认为不会有正常人能读到最后一段。我只能说,尽力了。

1523049

 

如果你是中本聪

 

假如你是2009年的中本聪,你已经找到了解决双重支付的方法,现在要设计比特币的转账功能了。你会怎么做呢?我的设计方案会是这样:

发送方向比特币网络发一份广播,其内容是这样的:“从A地址转账1 BTC给B地址。同时附上A地址私钥的签名”。网络各节点收到广播,校验签名合法。于是从A地址扣掉1 BTC,给B地址加上1 BTC。
简洁明了对不对?我猜你的设计方案也许和我差不多。幸亏你我都不是中本聪。如果是这样的设计,那么比特币的潜力将大打折扣,我们也无法看到今天区块链领域的蓬勃生息。让我们看看中本聪的设计方案:
发送方向比特币网络发一份广播,其内容是这样的:“我要转账1 BTC,并且我能提供一段脚本,这段脚本作为钥匙可以打开这1 BTC上的锁;同时,我根据接收方的要求为这1 BTC加个新的锁”。
网络各节点收到广播,运行脚本,发现确实能“开锁”。于是根据发送方的指令给这笔比特币换上一把“新锁”,这笔比特币也就有了新的主人。当接收方想使用这1 BTC时,只要能提供一段新的脚本作为钥匙打得开这把新锁就行。
乍一看,中本聪的设计似乎非常繁琐和反直觉,然而这样的设计却大有道理。脚本是一种简单的计算机语言,比如JavaScript就是一种脚本。比特币的脚本可以表述的内容非常灵活,远远超出了一对一转账的范畴。例如:A可以约定必须由收款人B和担保人C同时签名才能支配某笔比特币(担保交易),也可以约定B、C、D中任意两人签名就能支配(联名账户);A可以约定B必须在一年后才能动用某笔比特币(延时支付),也可以约定任何人都能支配(撒钱)或者都不能支配(烧钱)。通过这套内置的脚本编程语言,你可以灵活地编写出各种各样的约定——而这其实就是简单的智能合约。用比特币脚本编写的合约系统,使得比特币成为了人类历史上第一种可编程的货币。

 

真正的中本聪是这么说的

 

2010年,当发现了比特币的内置脚本系统后,有人在bitcointalk上发帖表示了惊讶和不解:“比特币的脚本让我有点紧张,这过于复杂了,而复杂是安全的天敌”。此君不是别人,正是后来成为中本聪继任者的Gavin Andresen。中本聪是如此回复他的:

无标题

大意是说:我希望比特币在0.1版就能拥有稳定的架构,未来不需要再做底层改变。在过去几年设计比特币的过程中,我发现只有使用脚本系统才能完成我希望支持的各种复杂交易类型——担保交易连带合同第三方仲裁多方签名等等。

放在今天,也许中本聪会直接说:“比特币需要脚本,有了脚本,就有了智能合约”。

插个题外话。这篇帖子短短9条,却可以堪称区块链技术发展史上的一次重要对话。你会发现8楼有人问“比特币的脚本系统是不是意味着用户可以发行自定义资产?”。此人ID是bytemaster,后来其创立了可以发行用户自定义资产的比特股。9楼Gavin回复说:

“I don't think you need scripts to do something like that. Just send a bitcoin to yourself, and then declare that transaction is the root transaction for My Valuable Asset.”
这恐怕是彩色币的概念第一次被提出。

 

比特币脚本的真容

 

说了这么多虚的,来点干货。现在请把你的大脑当做一台基于堆栈的解释器和虚拟机,看看比特币的脚本到底是怎么运作的。一个典型的比特币标准交易(Pay-to-Public-Key-Hash)的验证流程,需要执行这样的脚本:

scriptPubKey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
(scriptPubKey就是前文比喻的1 BTC上的脚本“锁”)
scriptSig: <sig> <pubKey> 
(scriptSig就是前文比喻的发送方A提供的脚本“钥匙”)
 

Snip20150924_27

 

脚本执行完毕后,如果结果为true,那么说明验证通过,A有权支配这笔比特币。比特币网络就会根据A的指示为这笔比特币加上一把“新锁”,转账完成。

 

比特币脚本的局限性

 

为了保持比特币的向前兼容和简单稳定,比特币的开发者们对其脚本做了诸多限制。比如脚本中没有循环语句,比如bitcoin core客户端目前只支持5种固定模式的脚本。这一方面是由于历史包袱,一方面是比特币的开发团队倾向于保守和稳健。

有的朋友可能知道我们正在开发一个用于登记、管理和交易股权的区块链协议——小蚁。小蚁复用了比特币的主要架构,其中就包括了脚本系统。在此基础上,小蚁参考了Gavin Andresen提出的比特币改进提案BIP12,增加了一条OP_EVAL指令。我们先来看看小蚁下的标准交易(Pay-to-Script-Hash)是怎么工作的:

scriptPubKey: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_EVAL
scriptSig: <sig1> <sig2> <redeemScript> 
redeemScript: OP_2 OP_3 OP_CHECKMULTISIG
Snip20150924_28

Snip20150924_29

 

比特币脚本 + BIP12 = 图灵完备

 

OP_EVAL指令的加入使得小蚁拥有了图灵完备的脚本系统,也就为更复杂的智能合约提供了可能。

图灵完备是指一个能计算出每个图灵可计算函数(Turing-computable function)的计算系统。或者说,图灵完备使我们的脚本系统有能力解决所有的可计算问题。一方面,它带来了强大的处理能力;另一方面,它也使对脚本的静态分析变为不可能:我们永远也无法知道脚本何时会停止,除非我们真正去执行它。

比特币网络中的每一个节点都要执行每一笔交易中的脚本,这就使得比特币脚本系统的设计需要足够精简。而作为一个点对点的电子现金系统,比特币也确实无需更为复杂的脚本系统。

小蚁采用图灵完备的脚本方案,并通过以下的两个方法来避免图灵完备带来的问题:

  1. 限制每个脚本可执行的步骤,一旦脚本的执行超过了限制,就立刻判定为验证失败。由于任何节点在广播交易之前会首先验证它,因此超出步骤限制的脚本不会影响到全网的所有节点。
  2. 对于执行步骤很多的交易,收取较高的手续费,从而减少通过构造复杂脚本来发动拒绝服务攻击的情况。
解决了图灵完备带来的问题之后,小蚁的脚本系统可以应用于以下的一些场景:

 

  1. 智能合约:对合约的条件进行判断,满足条件后自动执行合约条款,比如股权质押贷款;
  2. 更高级的权限管理:利用脚本来对参与签名的密钥分配权限,完成比m-of-n更精密的权限管理;
  3. 彩票:脚本可以配合小蚁区块中的强随机数,实现彩票功能;
  4. 其它:图灵完备意味着只要你能想到的功能都可以实现。
关于脚本和智能合约,就先聊到这里。如果对你来说这些太简单了,那么欢迎牛人加入小蚁团队,我们的官网是:https://www.antshares.com/;如果你想了解多一些区块链领域的创新和投资机会,请加入小蚁社群的QQ群:23917224。10月份小蚁的众筹方案会在那里第一时间公布。

 

作者:达鸿飞  张铮文 责编:洒脱喜 稿源:巴比特资讯

评论(30)
登录 账号发表你的看法,还没有账号?立即免费 注册
  • 巴比特资讯 2015-09-24
    【中本聪:智能合约?比特币自带】 @达叔达鸿飞 前言:写完给身边的程序员朋友看了下,85%表示IQ不够用,并且认为不会有正常人能读到最后一段。我只能说,尽力了。http://t.cn/RyX9lwJ 2010年,当发现了比特币的内置脚本系统后,有人在bitcointalk上发帖表示了惊讶和不解……
  • 达叔达鸿飞 2015-09-24
    高能,墙裂推荐
  • 比特币接盘女郎 2015-09-24
    不出所料,IQ不够用[笑cry]
  • 小蚁 2015-09-24
    有我出镜[馋嘴]//@达叔达鸿飞:高能,墙裂推荐
  • 风一般的男纸 2015-09-24
    硬广[阴险]//@达叔达鸿飞: 高能,墙裂推荐
  • 独行巨蟹 2015-09-24
    //@风一般的男纸: 硬广[阴险]//@达叔达鸿飞: 高能,墙裂推荐
  • He1l_Q 2015-09-24
    //@达叔达鸿飞: 高能,墙裂推荐
  • 长铗 2015-09-24
    比特币脚本 + BIP12 = 图灵完备,小蚁了不起,比特币底层协议层面的创新。
  • 梦想与现实2012思考中 2015-09-24
    比特币脚本不包含循环和递归就是为了简单和确定性 由于线性执行 限制脚本长度即限制了执行步数。而一旦图灵完备 则无法判断终止与否和运行步数 必须增加复杂的防御攻击及费用计算。多数以太坊(Etherium)的争议就是围绕这个。本文中列出的两个方法是不够的。
  • ryan2326 2015-09-24
    了不起的中本聪,区块链太强大了,主链不搞脚本创新是对的,你们搞吧
  • uncleZach 2015-09-24
    85%表示智商不够用,果然够硬//@风一般的男纸:硬广[阴险]//@达叔达鸿飞: 高能,墙裂推荐
  • 弱不禁风慢声细语 2015-09-24
    //@长铗:比特币脚本 + BIP12 = 图灵完备,小蚁了不起,比特币底层协议层面的创新。
  • 我看比特币 2015-09-25
    非常棒的想法和实践,支持一个!!!不过有点问题想探讨一下。比特币脚本没有循环和递归语句,因而叫图灵不完备,小蚁加上了OP_EVAL,并不能使脚本图灵完备。另外,图灵是否完备并不能说明某个脚本系统的高级与否,只看是否方便使用,更安全。因而以太坊在图灵完备这方面,不一定就比比特币脚本强。
  • 小蚁 2015-09-25
    OP_PUSHDATA {OP_DUP OP_EVAL} OP_DUP OP_EVAL 用形似这样的脚本就可以做循环了
  • 潦源 2015-09-25
    //@我看比特币: 非常棒的想法和实践,支持一个!!!不过有点问题想探讨一下。比特币脚本没有循环和递归语句,因而叫图灵不完备,小蚁加上了OP_EVAL,并不能使脚本图灵完备。另外,图灵是否完备并不能说明某个脚本系统的高级与否,只看是否方便使用,更安全。因而以太坊在图灵完备这方面,不一定就比
  • 达叔达鸿飞 2015-09-25
    OP_PUSHDATA {OP_DUP OP_EVAL} OP_DUP OP_EVAL 就能loop咯//@我看比特币:非常棒的想法和实践,支持一个!!!不过有点问题想探讨一下。比特币脚本没有循环和递归语句,因而叫图灵不完备,小蚁加上了OP_EVAL,并不能使脚本图灵完备。另外,图灵是否完备并不能说明某个脚本系统的高级与否
  • yuan_moving 2015-09-25
    //@我看比特币: 不过有点问题想探讨一下。比特币脚本没有循环和递归语句,因而叫图灵不完备,小蚁加上了OP_EVAL,并不能使脚本图灵完备。另外,图灵是否完备并不能说明某个脚本系统的高级与否,只看是否方便使用,更安全。因而以太坊在图灵完备这方面,不一定就比比特币脚本强。
  • tuoniaopingshi 2015-09-25
    【46路,916路、702路,844路、62路,562路分别合并】4月8日,46路今天与916路完成合并,916路撤销改为46路,原46路改为46区间;明天,702路公交与844路归并,终点站延至华阴路;而62路与562路公交车后天合并,取名62路;78路4月12日起延伸至山
  • 张铮文 2015-09-26
    回复@梦想与现实2012思考中:为啥不够?
  • Shuai1988 2015-09-26
    没想到比特币还有这一手,本聪大神先知先验!//中本聪:智能合约?比特币自带 | 巴比特 http://t.cn/RyX9lwJ
  • 1
  • 2