比特万象可以发布和讨论区块链技术的工作原理吗?

比特币和区块链技术的关系_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
比特币和区块链技术的关系
助理翻译师|
总评分4.2|
用知识赚钱
&&比特币和区块链技术的关系
试读已结束,如果需要继续阅读或下载,敬请购买
定制HR最喜欢的简历
你可能喜欢火币网比特币价格继续回调 京东应用区块链技术-金投机构-金投网
还没有帐号?免费注册一个吧!
若您已有金投网帐号,可直接登录
某某栏目为VIP专享栏目开通VIP后可编辑
北京火币天下网络技术有限公司
机构认证:已认证
主营业务:
服务产品:比特币,区块链
联系人:********
QQ号:********
电话:********
邮箱:********
官网:********
前值:53.1
公布值:53.3
13:00新加坡
公布值:待公布
预测值:0.5
13:00新加坡
公布值:待公布
火币网比特币价格继续回调 京东应用区块链技术
摘要根据中国安全可信赖的比特币交易平台火币网行情显示,截止北京时间11月25日9点左右,比特币价格在5192元人民币。今日比特币火币网开盘价格5138元,最低价格5110元,目前最高价格5214元。
根据中国安全可信赖的比特币交易平台火币网行情显示,截止北京时间11月25日9点左右,比特币价格在5192元人民币。今日比特币火币网开盘价格5138元,最低价格5110元,目前最高价格5214元。
火币网比特币价格从最高价格5377元开始回调,回调最低价格昨天跌破了前天最低价格5145元,到了5110元。目前价格随后开始上涨,最高到了5214元,涨了百元左右。
比特币价格自从11月17日到达最高价格5424元之后,目前价格一直上蹿下跳,但是价格却一直维持在5000元上方,今天已经是第八天价格在5000元之上了。显然,越是维持在5000元上方的时间越多,对于多方也是一种强势。
这是火币网比特币价格今日日线图。
(比特币行情截图来自火币网huobi.com)
再让我们看看行业发生了哪些事情。
京东万象率先应用区块链技术,建设健康大数据生态
近日,京东云旗下大数据交易平台&&京东万象数据服务商城宣布率先将区块链技术用于大数据的流通和交易,实现数据的溯源、确权,成为全国首个能够有效保护数据知识产权的大数据平台。应用区块链技术后,得到权益保障的数据提供方会更愿意参与数据交易,而数据需求方也可以轻松获取原始数据,查看数据质量,得到指导服务等。区块链技术历史性地突破了限制数据流通和交易的瓶颈,将促成数据市场的规模性增长,真正推动各行业、企业运用大数据实现升级转型,全面带动大数据流通进入2.0时代。
京东万象总经理杜宇甫介绍道:区块链技术作为一种新型去中心化协议,能够安全透明地记录交易或其它数据,且记录不能被篡改。因此,京东万象采用区块链技术后,无需第三方认证,即具有可确权、可溯源的功能。通过采用区块链技术,京东万象平台把数据变成受保护的虚拟资产,每笔交易和数据都有确权证书。而未经许可的盗卖没有确权证书,或者证书与区块链确权不匹配,数据提供方就可要求法律保护。此举将通过凸显正版数据价值,打击盗卖,重塑数据市场的流通规则,激发数据交易的积极性,促进流通的繁荣。
杜宇甫表示:&现在数据提供方都有非常强的数据保护意识, 如果权益得不到保护,对数据流通抱有担忧,他们便不愿意大规模地为客户提供数据服务。基于区块链技术,将有效打造公平流通的交易环境,促进未来的数据市场规模飞速发展。&
免责声明:本文行情部分数据来自于huobi.com,以上数据24小时实时变化,本文行情分析供参考,并不构成任何投资意见或建议。
免责申明金投网发布此文目的在于促进信息交流,不存在盈利性目的,此文观点与本站立场无关,不承担任何责任。部分内容文章及图片来自互联网或自媒体,版权归属于原作者,不保证该信息(包括但不限于文字、图片、图表及数据)的准确性、真实性、完整性、有效性、及时性、原创性等,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。未经证实的信息仅供参考,不做任何投资和交易根据,据此操作风险自担。
升级VIP提示
某某栏目为VIP专享栏目开通VIP后可编辑京东万象科技助数据流通 区块链技术促行业发展
作者:liqun
分类 : 新闻中心
  日,自2015年国务院印发《促进发展行动纲要》以来,技术与经济社会的交汇融合引发了迅猛增长,数据已成为国家基础性战略资源,大数据从抽象概念真正走入了消费者生活与经营中,随之而来数据流通逐渐受到社会各方高度关注。今日,京东云旗下的综合性数据服务商城京东万象在京召开主题为“破界,数链未来”的2017中国数据流通峰会,发布一系列产品与服务,包括京东万象 EID、数据质量管理、数据图谱、数据集成和区块链应用 ,以科技助力数据流通与行业健康发展。
  京东集团副总裁、京东云总裁何刚先生表示:数字化转型正在成为企业变革的新动力,、大数据作为基础性战略资源,正成为拉动技术进步和产业发展的强大引擎。京东万象于通过技术能力帮助企业更好地获取数据和使用数据,解决数据从何而来,是否可信,如何转化为价值等问题,助力中国数据生态从根源上健康、有序、创新发展。
  打造数据智慧时代的发动机
  京东万象此次发布的产品与服务包括京东万象EID、数据质量管理、数据图谱和数据集成,结合不久前应用的区块链技术,形成了一整套从版权、质量、、指导到集成 的端到端数据流通解决。
  1. 京东万象EID运用
  京东万象结合公安部EID技术,为数据交易双方提供可识别的认证服务,并将数据授权和流通各个环节记录到数据流通的区块链上,以证明数据流转的安全性和可信性,保证整个数据流通的安全可追溯。
  个人数据交易授权及隐私保护流程
  2. 数据质量管理
  京东万象结合多年的实践,制定了数据质量标准供数据使用方参考,包括吞吐量和响应时间、并发能力、容错能力、负载能力等,帮助需求方在购买过程中获得更多有关数据的信息,以指导其选购行为。
  3. 数据图谱
  从数据类别、名称、应用行业、应用场景等维度生成数据流通图谱,该图谱使行业与数据的关系、热度得以清晰呈现,指导数据需求方找到目标行业最需要关注的数据,并指导数据提供方拓展数据方向、有的放矢。
  4. 数据集成
  开发人员在实现一个业务应用场景时,往往需要将多个数据服务进行集成,耗时耗力,不同的接口规范和数据格式给开发者的数据迁移带来很大挑战,需要不断调整接口、调用。京东万象数据集成服务为开发者降低开发混合应用复杂度,在平台上集成第三方应用接口,将多个数据服务在平台端完成集成,通过一次调用,即可实现业务场景。
  基于区块链技术的数据交易溯源平台
  京东万象是国内首个采用了区块链技术的大数据交易平台,京东万象总经理杜宇甫谈道,当前数据流通有三种形式分别为API、数据包和数据报告,在流通和使用过程中存在着数据源分散、质量良莠不齐和标准不一致的问题。同时,由于数据信息透明度低、数据伪造篡改、数据交易存在非法倒卖等现象,造成数据开放、共享、交易和流通受到制约,这些问题都阻碍着大数据流通领域的发展。
  京东万象基于研究指出,区块链技术可保证数据交易相关权益:
  区块链提供了可追溯路径,能有效破解数据确权难题。
  区块链通过网络中多个参与计算的节点来共同参与数据的计算和记录,并且互相验证其信息的有效性,既可以进行信息防伪,又提供了可追溯路径。
  把各个区块的交易信息串起来,就形成了完整的交易明细清单,每笔交易来龙去脉非常清晰、透明。
  当用户对某个区块的“值”有疑问时,可方便地回溯历史交易记录进而判别该值是否正确,识别出该值是否已被篡改或记录有误。
  基于区块链技术的数据交易溯源平台
  区块链技术作为一种新型去中心化协议,能够安全透明地记录交易或其它数据,且记录不能被篡改。京东万象数据服务商城已经将区块链技术用于大数据的流通和交易,通过实现数据的溯源、确权,并无需第三方认证。通过采用区块链技术,京东万象平台把数据变成受保护的虚拟资产,每笔交易和数据都有确权证书。而未经许可的盗卖没有确权证书,或者证书与区块链确权不匹配,数据提供方就可要求法律保护。此举将通过树立正版数据,打击盗卖,重塑数据市场的流通规则,激发数据交易的积极性,促进流通的繁荣。
  携手促进产业进步与发展
  2017中国数据流通峰会期间,中国数据共享公约组织宣布成立,该组织由积极投身于大数据产业的企业、大学、科研机构等单位组成,核心任务是探索行业组织模式创新,促进数据提供商、服务提供商、技术提供商、数据需求方以及研究机构在数据基础材料、技术研发、产品开发和数据服务、数据安全流通等领域进行深入合作,整合行业资源,塑造中国数据共享行业的联盟品牌,助推形成绿色低碳的新型大数据流通产业体系,推动经济发展从要素驱动向创新驱动转变,实现产业与行业应用共繁荣。中国数据共享公约组织由CAICT中国信息研究院担任理事长单位,京东云、和等14家企业出任副理事长单位。
  中国数据共享公约组织成立仪式
[ 责任编辑:li ]
比特网 17:57:58
互联网+升级到智能+,开启万物智联新时代
中国互联网消费市场,发展潜力一片大好
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。区块链技术入门,涉及哪些编程语言? - 知乎<strong class="NumberBoard-itemValue" title="被浏览<strong class="NumberBoard-itemValue" title="1,866分享邀请回答bitcoin.org/bitcoin.pdf)中文翻译版本:比特币白皮书:一种点对点的电子现金系统()这份白皮书是区块链的起源,也是区块链从业人员必须要看的。02.普林斯顿大学的公开课:Bitcoin and cryptocurrency: 内容讲的很透彻。密码学原理,bitcoin的基本概念,共识机制,区块链现状 ,区块的应用中问题,包括比较新的侧链都有讲到。基本也是从业人员必看的。03.Master Bitcoin这本书:中文名:《精通比特币》英文名:《Master Bitcoin》我自己之前并没有在jd/tb/dd/amz找到这本书,所以附上中文电子版本:(链接:
密码: uq7g)侵删。这本书极其推荐去看一下,内容由浅入深,基本概念,代码分析都是有的,密码学也讲的很通俗易懂。通过以上资料的学习,基本对于区块链就有了一个基本的了解。二、从业务角度学习区块链技术?01.工信部的白皮书:(链接:
密码: ctbn)02.香港金管局的白皮书:(链接:
密码: 25nh)03.腾讯关于TRUSTsql的白皮书:(链接:
密码: ctbn)04.《区块链从数字货币到信用社会》--长铗著作:长铗前辈的讲解可以说是非常透彻,而且对于未来的展望也很有现实意义。05.《区块链:定义未来金融与经济新格局》-张健著作:作者为火币网技术副总裁可以说是个奇才,把概念讲的非常清楚。06.世界经济论坛区块链报告:(链接:
密码: mbxf)07.国内证券公司报告:(链接:
密码: mbxf)08.美国政府公布的15大区块链医疗研究论文:(链接:
密码: 3fap)09.欧洲央行分布式账本技术报告:(链接:
密码: 3fap)10.其他资料就不太方便共享了:我觉看了上面推荐的这些书和报告,你应该从业务角度对于区块链技术有了一个比较深入的了解了。三、从技术角度学习区块链技术?(一)、基础阶段:01.《区块链开发指南》-作者申屠青春:作者多余比特币底层的研究可谓是非常深入,讲解的也非常通俗易懂。02.《区块链技术指南》-作者邹均:作为国内第一本从技术角度讲解区块链的书籍,值得一读,2016年出版以来一致评价不错。03.《区块链 原理、设计与应用》-作者杨保华陈昌:陈昌前辈作为纸贵的CTO、记得之前的墨链就是基于Hyperledger Fabric的,所以这本书对于Hyperledger 相关开源产品的讲解很透彻。(二)、以太坊部分:04.以太坊介绍:官网:中文学习社区:GitHub:05.以太坊白皮书:中文版:05:Solidity语言(以太坊开发推荐语言):官网:06.web3.js(与以太坊交互的js api):网址:论坛:07.truffle框架:官网:以太坊开发的瑞士军刀,几乎是一站式解决方案。08.Open-zeppelin合约审查:官网:09.《Ethereum: Blockchains, Digital Assets, Smart Contracts, Decentralized Autonomous Organizations》:没有中文版,只有亚马逊有卖(三)、Hyperledger 开源项目学习:01.Hyperledger 基本信息:官网:02.Fabric 学习:官网:(四)、其他:01.BigchainDB:官网:这个是我比较看好的一个项目02.IPFS:官网:这个据说是一个取代http的价值传输协议,比较看好03.国内的布比:官网:个人认为值得研究《区块链技术原理与底层架构》这本书有详细讲解布比的技术实现。四、学习资料推荐与共享?图文教程:书希望以上答案可以对你有所帮助!后期有时间再更新!49419 条评论分享收藏感谢收起zhihu.com/people/tuo-ya-58-72以太坊爱好者 · 1 分钟前翻译:Toya声明:转载须附本文链接,违者必究原文链接:我已经智能合约领域工作了4年,主要在比特币区块链上。我参与的一些项目包括存在证明,bitcore(比特核心)以及Streamium. 过去这个月,我探索了在以太坊平台上进行开发。我决定制作一个简短的指南服务未来想要学习以太坊开发的程序员。手册分为两个部分:如何开始以太坊智能合约开发,智能合约安全简述.如何开始学习以太坊智能合约0.基础概念这个指南假设你已经有了一些密码学货币和区块链的基础技术背景。 如果你没有,我建议快速过一遍Andreas Antonopoulos的《完全掌握比特币》(Mastering Bitcoin),Consensys的《用刚刚够的比特币来搞懂以太坊》(Just Enough Bitcoin for Ethereum),或者至少看看Scott Driscoll的短片。 为了继续读下去你得了解公钥和私钥,为什么区块链需要矿工,如何达成去中心化的共识,以及交易脚本和智能合约的概念。另外两个在你开始进行以太坊开发之前需要了解的重要的,相关的概念是以太坊虚拟机和汽油(gas)。以太坊的目的在于成为一个智能合约平台。它的起源可以被追溯到Vitalik Buterin对比特币做为智能合约平台具有的局限性的评论。以太坊虚拟机(EVM)是以太坊智能合约执行之处。与比特币相比,它为撰写合约提供了更具表现力和完整性的语言。事实上,它是一个图灵完备的编程语言。一个比较好的比喻是,EVM是一个执行智能合约的分布式的世界电脑。由于智能合约由EVM执行, 必须存在一种限制每个合约占用资源的机制。EVM内运行的每一步操作实际上同时在被所有节点所执行。这是为什么需要有汽油(gas)存在。一个以太坊合约代码交易可以引发数据读写,密码学原语,调动(发送信息给)其他合约等等昂贵的运算。每个此类运算都有用汽油计量的价格,每笔交易所耗费的汽油单元需要用以太币来支付,根据随时变化的汽油和以太币的汇率计算。相应的价格会从提交交易请求的以太坊账户中扣除。同时每笔交易对可使用的汽油会设置上限参数,用以防止编程错误导致耗干账户中资金。点击这里阅读更多关于汽油。1.设置你的环境好了,你已经知道了那些基础的,让我们赶紧把环境搞起来写代码吧。为了开始开发以太坊app(或者dapp,去中心化应用的简称,许多人喜欢这样叫),你需要安装一个客户端来接入主网。它会成为你进入这个分布式网络的窗口,提供一个观察区块链的方法,那里所有EVM(以太坊虚拟机)状态被显示出来。有很多与条款兼容的客户端,最受欢迎的是geth,用Go语言实现。但它并不是最开发者友好的客户端。我目前找到最好的选择是testrpc节点(是的,名字起得很糟糕)。相信我,它会节省你很多时间。安装它,运行它:$ sudo npm install -g ethereumjs-testrpc
你应该在一个新的终端中运行‘testrpc’,并且在你开发的过程中一直让它运行。每次你运行testrpc,它会生成10个包涵模拟测试资金的新地址供你使用。这个不是真钱,你可以安全得用这些进行任何实验,不会有损失资金的风险。在以太坊中撰写智能合约最受欢迎的语言是Solidity,因此我们会使用这个语言。我们也会用Truffle开发框架,它会帮助创造智能合约,编译,部署以及测试。让我们开始吧# First, let's install truffle
首先,让我们安装truffle
$ sudo npm install -g truffle# let's setup our project
$ mkdir solidity-experiments
$ cd solidity-experiments/
$ truffle init
Truffle 会生成一个示范项目所需要的文件,包括MetaCoin,一个token合约的例子。你应该能够通过运行truffle compile指令来编译示范合约。然后,你需要通过我们在运行的testrpc节点用‘truffle migrate’指令来在模拟网络部署合约。Compiling ConvertLib.sol...
Compiling MetaCoin.sol...
Compiling Migrations.sol...
Writing artifacts to ./build/contracts$ truffle migrate
Running migration: 1_initial_migration.js
Deploying Migrations...
Migrations: 0xdbba55c2fce8b16f61a5d
Saving successful migration to network...
Saving artifacts...
Running migration: 2_deploy_contracts.js
Deploying ConvertLib...
ConvertLib: 0xaa2b9ceced7e4b0dae92c77a49ad
Linking ConvertLib to MetaCoin
Deploying MetaCoin...
MetaCoin: 0xdd14da38fb0cf6c843fa1
Saving successful migration to network...
Saving artifacts...Note to Mac OS X users: Truffle is sometimes confused by .DS_Store files. If you get an error mentioning one of those files, just delete it.
我们刚刚往测试节点上部署了我们的示范合约。哇!很简单,对吧?是时候写我们自己的合约了!2.撰写你的第一个以太坊只能合约在这个指南里面,我们会写一个存在证明只能合约。就是创造一个存有用于证明存在的文件哈希的电子公正机关。用‘truffle create:contract’来开始:$ truffle create:contract ProofOfExistence1
从你的编译器里面打开合约/ProofOfExistnece1.sol(我用的是带Soilidity语法高亮显示的vim)// Proof of Existence contract, version 1
contract ProofOfExistence1 {
// calculate and store the proof for a document
// *transactional function*
function notarize(string document) {
proof = calculateProof(document);
}// helper function to get a document's sha256
// *read-only function*
function calculateProof(string document) constant returns (bytes32) {
return sha256(document);
我们将从一段简单但是有错误的代码开始向一个更好的解决方案靠近。这是一份Solidity合约定义,有点像其他语言中的类别(class)。合约中有状态(state)和函数(functions)。区分合约中可能出现的两种函数非常重要。只读(常数)函数:这些函数不对任何状态(state)进行改变。他们只读取状态,进行计算,并且返回数值。因为这些函数可以在每一个节点内本地解决,他们不回花费任何的汽油(gas)。他们被用‘contant’关键词标出。交易函数:这些函数对状态进行改变,转移资金。因为这些变化需要在区块链中被反应出来,执行交易函数需要向网络提交交易,这会消耗汽油(gas)。我们的合约中两种函数各有一个,已在注释中标注。下一段我们将会看到我们使用函数的类型会如何改变我们与智能合约交互。这个简单的版本每次只储存一个证明,用数据类型bytes32或者32bytes,跟sha256哈希的大小一样。交易函数‘notarize’允许我们在合约的状态变量‘proof’里存储一个文件的哈希。这个变量是个公开变量,是我们合约的用户认证一个文件是否被公正的唯一途径。我们一会就会自己做一下,但是首先。。。让我们把ProofOfExistence1部署到网络上!这次,你需要通过编辑移动文档(migration file)(migrations/2_deploy_contracts.js)让Truffle部署我们的新合约。用以下的来代替内容:/*
* migrations/2_deploy_contracts.js:
module.exports = function(deployer) {
deployer.deploy(ConvertLib);
deployer.autolink();
deployer.deploy(MetaCoin);
// add this line
deployer.deploy(ProofOfExistence1);
你也可以选择性的删除有关ConvertLib和MetaCoin的语句,这些我们不会再用了。为了再次运行这个移动,你需要使用重启标签确保它再次运行。truffle migrate --reset
更多的关于Truffle移动如何工作的内容可以看这里。3. 与你的智能合约互动现在我们已经将智能合约部署好了,让我们摆弄摆弄它!我们可以通过函数调用来给它发信息或者读取它的公开状态。我们通过Truffle操纵台来完成:$ truffle console
// get the deployed version of our contract
truffle(default)& var poe = ProofOfExistence1.deployed()// and print its address
truffle(default)& console.log(poe.address)
0x3d3bce79cccc331e9e095e8985def// let's register our first "document"
truffle(default)& poe.notarize('An amazing idea')
Promise { &pending& }// let's now get the proof for that document
truffle(default)& poe.calculateProof('An amazing idea').then(console.log)
Promise { &pending& }
0xaabdee1dd2f50a9f75bda387b93580ee7// To check if the contract's state was correctly changed:
truffle(default)& poe.proof().then(console.log)
0xaabdee1dd2f50a9f75bda387b93580ee7
// The hash matches the one we previously calculated
注意所有函数调用都会返回一个Promise,当Promise被解决如果我们想要检验它我们可以通过‘.then(console.log)’来输出。我们要做的第一件事是获得一个我们部署合约的表达,并把它存储在一个叫做‘poe’的变量之中。然后我们调用交易方程‘notarize’,这会涉及一个状态改变。当我们调用一个交易方程,我们得到的是一个被转化为交易id的Promise,而不是函数返回的值。记住为了改变EVM状态我们需要消耗汽油(gas)并且向网络提交一个交易。这是为什么我们会得到交易id做为Promise的结果,从改变状态的那项交易那里得到。在这里,我们对交易id不感兴趣,所以我们可以把Promise丢掉。不过当我们真正写app时,我们会想要把它存起来用以检查相应的交易,捕捉错误。接下来,我们调用只读(常数)函数‘calculateProof‘. 记得用’constant‘关键词来标记你的只读函数,否则Truffle会试着创造一个交易来执行这个函数。这个是我们告诉Truffle,我们并没有跟区块链交互而只是在读取。通过这个只读函数,我们会得到’An amazing idea‘文件的sha256。我们现在需要把这个和我们智能合约的状态进行对比。为了检查状态的改变是否正确,我们需要读取‘Proof’这个公开状态变量。要获得一个公开状态变量的值,我们得调用具有同样名字的一个函数,它会返回一个Promise。我们这次,输出的哈希值是一致的,所以一切都如我们所料得进行了 :)像你从上面的片段看到的,我们第一版存在证明智能合约似乎可以工作!干得好!但是它每次只可以注册一个文件。让我们做一版更好的。4. 合约代码迭代让我们修改合约来支持多个文件验证。把原文件复制到名为contracts/ProofOfExistence2.sol的新文件中,并且采取以下改变。主要的变化包括:我们把‘proof’变量变成了bytes32的数组,并且命名为‘proofs’,我们把它变成私有,然后加入一个通过循环访问数组来检查一个文件是否被公正的函数。// Proof of Existence contract, version 2
contract ProofOfExistence2 {
// store a proof of existence in the contract state
// *transactional function*
function storeProof(bytes32 proof) {
proofs.push(proof);
// calculate and store the proof for a document
// *transactional function*
function notarize(string document) {
var proof = calculateProof(document);
storeProof(proof);
// helper function to get a document's sha256
// *read-only function*
function calculateProof(string document) constant returns (bytes32) {
return sha256(document);
// check if a document has been notarized
// *read-only function*
function checkDocument(string document) constant returns (bool) {
var proof = calculateProof(document);
return hasProof(proof);
// returns true if proof is stored
// *read-only function*
function hasProof(bytes32 proof) constant returns (bool) {
for (var i = 0; i & proofs. i++) {
if (proofs[i] == proof) {
让我们与新的函数互动一下:(不要忘了更新migrations/2_deploy_contracts.js来加入新的合约并且运行‘truffle mirgrate--reset’)// deploy contracts
truffle(default)&
migrate --reset// Get the new version of the contract
truffle(default)& var poe = ProofOfExistence2.deployed()// let's check for some new document, and it shouldn't be there.
truffle(default)& poe.checkDocument('hello').then(console.log)Promise { &pending& }
false// let's now add that document to the proof store
truffle(default)& poe.notarize('hello')Promise { &pending& }// let's now check again if the document has been notarized!
truffle(default)& poe.checkDocument('hello').then(console.log)Promise { &pending& }
// success!// we can also store other documents and they are recorded too
truffle(default)& poe.notarize('some other document');
truffle(default)& poe.checkDocument('some other document').then(console.log)Promise { &pending& }
这一版比第一版强,但是仍然有些问题。注意每一次我们想要检查一个文件是否有被公正过时都需要循环访问所有存在的‘proofs’。储存proofs更好的结构会是用映射(map)。走运的是,Solidity支持映射结构,在这个语言里称此结构为mappings。另外一个我们会在这一版代码做出的改进是我们会去掉那些多余的标识只读(read-only)或交易(transactional)函数的那些注释。我想现在你已经都知道这些了:)下面是最终版本,我想应该不难理解,因为是从之前的版本一点点变过来的:// Proof of Existence contract, version 3
contract ProofOfExistence3 {
mapping (bytes32 =& bool)
// store a proof of existence in the contract state
function storeProof(bytes32 proof) {
proofs[proof] =
// calculate and store the proof for a document
function notarize(string document) {
var proof = calculateProof(document);
storeProof(proof);
// helper function to get a document's sha256
function calculateProof(string document) constant returns (bytes32) {
return sha256(document);
// check if a document has been notarized
function checkDocument(string document) constant returns (bool) {
var proof = calculateProof(document);
return hasProof(proof);
// returns true if proof is stored
function hasProof(bytes32 proof) constant returns(bool) {
return proofs[proof];
这下看起来已经足够好了。它跟第二版运行起来没有差别。记得更新移动文档(migration file)同时再次运行‘truffle migrate -- reset’来测试一下它。这个教程中的所有代码都可以在这里找到。5.在真正的测试网络上部署在你用testrpc在模拟网络上大量测试你的合约之后,你就可以在真正的网络上测试你的合约啦!这就需要你有一个真正的testnet/livenet以太坊客户端。点击这里看如何安装geth的说明。开发的过程中,你应该在testnet模式中运行你的节点,这样你就可以在没有损失真金白银的风险下进行所有的测试。Testnet模式(在以太坊也叫Morden)基本上与真正的以太坊一模一样,但是这里的以太币token没有任何金钱价值。不要发懒,记得永远要在testnet模式下开发,如果你因为编程错误而损失以太币,你会非常后悔的。在testnet模式下运行geth, 打开RPC服务器:geth --testnet --rpc console 2&& geth.log
这会打开一个你可以输入基本口令来控制你的节点/客户端的控制器。你的节点会开始下载testnet区块链,你可以在eth.blockNumber上查看下载进度。区块链下载的同时,你仍然可以运行口令。比如,让我们设置一个账户:(千万要记住密码!)& personal.newAccount()
Passphrase:
Repeat passphrase:
"0xad83c93f4c50bed51fc"
让我们发送一些以太币过去并且查询余额。你可以从这里获得免费testnet以太币:. 只需复制粘帖你刚刚生成的那个地址,这个水龙头就是给你发送一个以太币。想要查询余额,运行以下代码:& eth.getBalance(eth.accounts[0])
它会告诉你没有余额因为你还没有与全网络同步。在你等待的同时,去testnet block explorer去查询一下余额。那里,你也可以看到testnet目前最高的块数(写这个的时候是#1355293),你可以将这个信息与eth.blockNumber的信息结合去判断你的节点是否已经完成同步。一旦你的节点同步好,你就可以开始通过Truffle在testnet上部署你的合约了。首先,解锁你的主geth账户,这样Truffle就可以使用它。确认里面有一些余额,否则你将不能够把新的合约推向网络。& personal.unlockAccount(eth.accounts[0], "mypassword", 24*3600)
& eth.getBalance(eth.accounts[0])
准备好了吧!如果这两个的某一个无法运行,检查之前的步骤以确保你正确的完成了它们。现在,运行:$ truffle migrate --reset
注意这次会需要更长的时间来完成,因为我们是在连接到真正的网络而不是一个用testrpc模拟出来的网络。一旦完成,你就可以用之前同样的方法跟智能合约互动。在testnet上部署的版本ProofOfExistence3可以在这个地址找到:0xcaf216dfed520e1e3325dac3e79e05.我想把如何在以太坊现场网络部署合约的细节留给读者。你只应该在模拟网络和testnet大量测试你的合约之后再做这个。千万记得,任何编程错误都可能导致在livenet上的金钱损失!以太坊中智能合约的安全性问题很具有挑战性。参见 Emin Gun Sirer的 “智能合约挺难弄对的”。考虑到智能合约是定义金钱如何移动的电脑代码的性质,我不得不在安全问题上稍做提示。我会在以后的文章里深度的讨论合约安全性问题(像这里),但是这里我会先简单的提几点。一些你应该知道(并且避免)的问题:重入攻击(reentrancy):不要在合约里使用外部调用。如果迫不得已,确保它是你做得最后一件事。发送失败(send can fail):发送资金时,你的代码应该为发送失败的情况做好准备。循环可能引发汽油限制(Loops can trigger gas limit):当你在状态变量上做循环的时候千万当心,变量的大小会增长这可能导致汽油消耗到达极限。调用栈深度限制(Call stack depth limit):不要使用递归,记住任何调用都可能因为调用栈到达极限而失败。时间戳依赖性(Timestamp dependency):不用在代码的关键部分使用时间戳,因为矿工可以操纵它们。这些是智能合约中可能导致资金盗窃以及毁坏的一些意外行为的例子。中心思想是:如果你在撰写智能合约,你就在写真正处理金钱的代码。你应该加一万个当心!写测试,反复检查代码,并且做代码审核。避免明显安全问题的最好方法就是对语言有扎扎实实的理解。我建议熟读Solidity文档,如果你有时间。我们将会需要更多更好的工具来完善智能合约安全。7714 条评论分享收藏感谢收起}

我要回帖

更多关于 万象区块链肖峰 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信