『学概念找员外』以太坊和智能合约

之前已经介绍了几种用比特币的脚本语言写出有趣的应用的方法,如有托管功能的支付交易。也看到比特币脚本语言的一些瓶颈:只有很少的指令,并不符合图灵计算的标准。因此,很多新的另类币增添与应用程序相关的特殊功能。域名币是第一个尝试,后来又有许多加密货币,类似于比特币但是支持赌博、股票发行、市场预测等。

设想不需要为了每个应用程序,每次都建设一套新的系统,而是创造出一个加密货币系统,以支持所有未来可以想象到的任何应用。这就是所谓的图灵完备——据理解,满足图灵完备标准的编程语言,可以让你写出图灵机可以完成的任意功能,它可计算的函数和图灵机可计算的函数是完全相同的。因此,每一图灵完备的编程语言——包括我们熟悉的Java、Python和Lisp——都是图灵等价的。如果不考虑实际中的简单性和表现,图灵完备是在编程语言有关表达能力上需要的最好的性质。

从某种程度上讲,今天加密货币的发展使人回想起20世纪40年代早期计算机发展的时代:在第二次世界大战时,建造大量的复杂的只有某种特定功能的计算器(比如用于暴力破解密码的机器和海军用于确定发射弹道轨道的机器),这些工作促使研究专家致力于建造第一个可重复编程的通用计算机。任何可预见的应用程序都可以使用该计算机。

以太币(Ethereum)是一种雄心勃勃的另类币,致力于提供一种满足图灵计算要求的可编程语言,用这种语言可以编写脚本或者合约。虽然有其他方案可以做到这一点,但是以太坊无疑是最引人注目的:它使用了几个创新的技术,成功地完成了众筹,在几个月内筹资两千万美元,并且采用激进的参数,比如使用较短的产生区块的时间参数。

智能合约编程模式

智能合约最初是用来指使用计算机系统(或者其他自动化方式)来执行合约。例如,你可以把自动售货机看成一个销售商品的智能合约,执行的就是你和机器主人之间关于如何购买一个糖果的合约。

在以太坊体系,一个合约就是一个存在区块链里的程序。任何人支付一点费用,就可以用特定的操作将他的程序上传,建立一个以太坊合约。这个合约是用字节码(bytecode)写的,可以被特殊的以太坊专用虚拟机执行。一旦合约上传,便永远存在在区块链里。智能合约有它自己的资金账户,其他用户可以调用程序里面开放的应用程序编程接口(API),合约可以收发款项。

以太坊中的域名币

我们说以太坊可以用来执行任何特定应用的另类币功能。举个简单的例子,我们可以展示使用一个简单的以太坊合约,来构建出域名币形式的功能。

如下所示就是一个构建的案例。它是以“稳健”语言(Solidity)编写,“稳健”是以太坊里用于定义合约的高级编程语言。这个合约产生一个原始的域名/数值储存配对或者注册名。名字永远连着数字。这个合约定义了一个数字变量——注册表, 里面有32比特长字节和公开密钥的配对关系。初始时期,每个字节都对应着空地址0×0000000…000。这个合约同时定义了单一入口点,叫“用户名称”。这个入口点只接受名字参数。首先,这个合约确认调用这个合约的人已经支付了至少10个wei。wei是在以太坊里最小的货币单位。如果没有支付10wei, 合约自动终止并发出错误信号。如果足够的wei已经发出而且这个名字还没有被注册,那么这个名字就和调用的地址永久地联系在一起。

contranct NameRegistry {
    mapping(bytes32 => address) public registryTable;
    function claimName(bytes32 name){
        if(msg.value < 10){
            throw;
        }
        if(registryTable[name] == 0){
            registryTable[name] == msg.sender;
        }
    }
}

以上就是这个8行代码的合约能做的事。还可以多花点时间,把其他域名币有的功能都在这个合约里实现。比如,可以存储拥有者地址以外的信息,通过存储上次更新时间来要求域名的主人定期地重新注册,并且允许其他用户拥有长期不更新的域名权。我们还可以加第二个功能,允许钱回撤。按照初始的代码设计,钱只能不断堆积在合约里,也就意味着从流通中消失。当然,在可以回撤钱的程序里,最好能设定,调用回撤的是合约的主人。任何人在以太坊都可以调用任何方程,但是用户是指定的,所以能确认谁是真正调用方程的人。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容