精华内容
下载资源
问答
  • 区块链智能合约

    2019-03-15 10:00:35
    区块链与智能合约 联盟链场景中的智能合约应用 solidity 语言的常见问题
  • #资源达人分享计划#
  • 智能合约的出现,使区块链不仅能处理简单的转账功能,还能实现复杂的业务逻辑,极大地推动了区块链技术发展,加速应用落地。 通过智能合约语言Solidity,实现了共识逻辑的自定义。基于区块链的分布式应用(dapp)的...

    一、 智能合约的出现

    智能合约的出现,使区块链不仅能处理简单的转账功能,还能实现复杂的业务逻辑,极大地推动了区块链技术发展,加速应用落地。

    通过智能合约语言Solidity,实现了共识逻辑的自定义。基于区块链的分布式应用(dapp)的底层技术就是“区块链+智能合约”。第一个结合了区块链与智能合约技术的平台--以太坊的诞生,被认为是开启了"区块链2.0"时代。

    二、智能合约的全链路

    开发、编译、部署、调用

    三、智能合约的分类

    • Solidity合约
    • Precompiled合约

    四、Solidity合约代码结构

    • 状态变量:状态变量是永久存储在合约中的值

    • 构造函数:用于部署并初始化合约

    • 事件:事件是能方便地调用以太坊虚拟机日志功能的接口

    • 修饰器:函数修饰器可以用来改变函数的行为,比如自动检查,类似Spring的AOP

    • 函数:函数是合约中代码的可执行单元

    五、CRUD合约

    基于预编译合约和分布式存储设计的CRUD合约接口。

    用户可以直接在合约中引用CRUD接口文件Table.sol,并在Solidity合约中调用CRUD接口。CRUD合约的开发完全遵从数据库的操作习惯,更容易理解和上手。

    六、Solidity和Java的全链路对比

    图片

    Solidity与Java的不同之处在于,Solidity是服务于区块链的语言,代码在区块链上执行。EVM是区块链上的一个执行器。每个区块链节点都有一个EVM。Solidity在EVM中被执行后,EVM对区块链的数据进行了改变。这些数据的改变交由共识算法去共识。同时,Solidity的操作仅限于EVM内部,不能访问外部不确定系统或数据,如系统时钟,网络文件系统等。

    Solidity的设计目的,是给区块链提供一套统一的逻辑,让相同的代码跑在区块链的每个节点上,借助共识算法,让区块链的数据以统一的方式进行改变,达到全局一致的结果。

    七、Solidity的运行细节

    以此处的Demo合约为例,合约中有一个全局变量m,并有一个函数add(),实现给全局变量m增加x数值的功能。

    图片

    在合约二进制被部署到区块链上后,通过发送交易调用合约里的方法。节点根据交易将合约代码装载入EVM中,并根据交易的传参执行合约上相应的函数add()。

    EVM执行合约代码,从区块链上读入当前区块的数据,进行相加操作,并将结果写入下一个区块(等待共识的区块)对应的状态数据中。

    此后,共识算法将待执行的区块共识落盘,区块高度增加,区块链上的数据完成更新。

    这段Solidity代码的功能是存取_num字段。该字段被称为“状态变量”,会由区块链持久存储。

    用户可以将这段代码部署在以太坊或类似的区块链上,部署成功就意味着该智能合约不可再被修改,只要底层区块链不被销毁,这段合约就一直存在。任何人都可通过“合约地址”来调用该合约接口,每次调用信息都会被记录在链上。

    在讲解这段代码如何运行之前,我们先回顾下传统java程序的运行方式。

    首先,用户编译完java代码后,会以字节码的形式保存在磁盘上;然后用户会调用程序,这由JVM来托管执行;程序执行期间可能会通过日志来记录调用参数,也可能会和磁盘进行IO。

    Solidity的执行与此类似。不同的是介质由硬盘换成了区块链,由单机变为分布式。

    代码部署后,以字节码的形式存储在每一个节点上。当用户要求调用某个函数时,调用请求将会被囊括在交易中,并被打包到某个区块上,一旦全网对该区块形成共识,就意味着调用是合法的。

    接下来,EVM会来调用字节码,它负责存取底层的状态变量,好比传统编程的IO。

    图片

    光从代码来看,合约开发似乎不过如此,单个合约只需要围绕着字段进行操作,对于很多简单业务而言,不过是CRUD而已。

    但其复杂性也恰恰在于此,合约在区块链环境上执行,是不可修改的。

    所以如果出现了bug,就必须部署新的合约,这对于合约的可维护性提出了挑战。并且,一旦业务复杂起来,容易出现安全漏洞,导致链上资产损失。同时,还要考虑完成代码编写、逻辑执行、数据存储的成本问题。

    综上所述,写合约不难,但写好合约,却需要一定功底。

    八、智能合约的本质

    所谓“合约”,就是条文、合同一类的东西,里面记录了发生的条件与对应执行的条款,以支持确权等操作;所谓"智能",就意味着自动化、可编程。

    所以,智能合约就是可编程的合同,也可以理解为一段自动执行的条文合同,在计算机中,就是一段自动执行的程序片段。它更易于合约保存,并且由确定的算法运行,给定输入,就得到对应的输出,极大保障了合约的执行力。

    以自动售货机做类比,可以帮助我们更好地理解智能合约的核心特征。

    当使用者选择好要购买的货物并完成支付,出货逻辑就会被触发,用户就能得到想要的货物,而这个过程不需要人工介入,节省了售卖货物的人力成本。如果要破坏这个合约,就得物理破坏售卖机。像POS刷卡机、EDI(电子数据交换)等,也可作此种类比。

    九、智能合约与区块链

    智能合约在上世纪被提出,而区块链2009年才诞生,就定义而言,智能合约与区块链关系不大。

    那为什么在这10年中,智能合约与区块链却产生了如此紧密的关联?因为区块链可以保证智能合约的不可篡改,不仅合约内容不可篡改,每次调用记录亦不可篡改。

    智能合约产生价值的最基本前提是有一个强有力的底层介质用于储存,让其不可被物理破坏。

    然而,智能合约的本体是一份代码,非常容易被篡改,如何为其提供强力的存储介质就成了问题。这正好是区块链擅长解决的——通过比特币的实践,证明了区块链可以在分布式环境下让电子记录不可被篡改。

    与此同时,智能合约也在反哺着区块链,它极大地扩展了区块链的业务场景。

    与智能合约结合后,区块链不再服务于单一的货币支付,可以延申到生活中的方方面面。丰富的应用场景也对区块链的能力产生了新的挑战。

    十、不同平台的智能合约

    公有链

    图片

    联盟链

    采用chaincode的Fabric,大部分平台都采用Solidity作为智能合约语言。

    除了Solidity,WebAssembly、Libra的Move等一些智能合约语言也在发展中,可以保持关注。

    展开全文
  • #资源达人分享计划#
  • #资源达人分享计划#
  • 智能合约是用于信息传递、验证或合同执行的计算机协议。通过智能合约,可以...智能合约同时也比区块链概念发生得早一直到2008年为止才创造了采用智能合约所需的区块链技术,并于2013年作为以太坊智能合约系统的一部.

    在这里插入图片描述

    智能合约是用于信息传递、验证或合同执行的计算机协议。通过智能合约,可以在没有第三方的情况下进行可追踪且不可逆转的交易。

    智能合约的概念几乎与互联网同时出现。1994年,密码学家和计算机科学家Nick Szabo首次提出了“智能合约”的概念。基本上,这种自动化合约的工作方式类似于其他计算机程序的if-then语句,当预先生成的条件触发时,智能合约便会立即执行这些条款和条件。

    智能合约同时也比区块链概念发生得早一直到2008年为止才创造了采用智能合约所需的区块链技术,并于2013年作为以太坊智能合约系统的一部分受到了关注。

    新的智能合约平台为用户提供了新的去中心化世界。持续的代码编写和执行会带来多种创新,进一步来说,以太坊正在试图成为“世界的计算机”。

    基于区块链的智能合约构建及执行过程如下:

    1.首先,您必须是区块链的使用者。注册用户有一对公钥和私钥。公钥是用户在区块链中的帐户地址,私钥是登录该帐户的唯一钥匙或者也可以说是密码。

    2.多方用户共同协商以电子化方式编程机器语言指定了包含双方义务和权利的承诺,参与者各自用私钥签名以确保合约的有效性。

    3.签名后,智能合约可以根据承诺的内容通过点对点(P2P)网络扩展并存储在区块链中。

    4.成功构建的智能合约达到等待条件后自动运行合约内容。

    智能合约有哪些实际的应用场景?生活中常见的自动售货机就是一个很好的例子。在正常运行的状态下投入硬币后触发履行行为——,释放买方选择的饮料并且这个是不可逆转的履行行为。今后,智能合约系统在投票、金融、房地产、物联网、供应链、能源、公共服务领域等方面具有广泛的应用方案。同时,CellETF也可以说是智能合约的又一个应用场景,CellETF是部署在以太坊主网上的去中心化交易平台,所有交易均通过智能合约执行。同时,CellETF作为以太坊上的去中心化交易所,eCell是平台的基础治理通证与核心功能代币,是通过以太坊智能合约创建的代币,属ERC20代币。它将为智能合约聚合ETF清算、自动做市、流动资金池、流动性挖矿、跨链价格事实预言机等去中心化协议,为用户提供多样化的衍生品及策略选择。eCell作为基础通证,也将构筑起支撑整个Cell网络体系的经济模型。区块链技术不仅支持可编程合约,而且提供与智能合约十分契合的去中心化的、不可篡改且稳定的特性。基于区块链技术的智能合约不仅具有成本效率的优势,而且还可以防止正常执行的恶意篡改和干扰。区块链技术的特性,可以保障储存、读取、执行整个程序的可追溯、安全性和透明性,区块链中智能合约的应用,可以让智能合约更有效地执行。因此,智能合约可以说是与区块链相辅相成互为成就的。如果说智能合约是能够智能地自动化地执行一系列复杂且具有触发条件的数字化承诺,则添加区块链技术可以使智能合约根据参与者预先指定的规则自动、智能、确定和可信地执行。智能合约在区块链中的应用也将会以多种方式呈现在公众的视野中,从而实现与多种场景的深度融合。

    展开全文
  • #资源达人分享计划#
  • 区块链智能合约

    万次阅读 2019-04-07 01:02:08
    区块链1.0应用以比特币为代表,为了解决货币和支付手段的去中心化,那么区块链2.0就是更宏观的对整个市场的去中心化,利用区块链技术来转换许多不同的资产而不仅仅是比特币,通过转让来创建不同资产单元的价值。...

    区块链1.0应用以比特币为代表,为了解决货币和支付手段的去中心化,那么区块链2.0就是更宏观的对整个市场的去中心化,利用区块链技术来转换许多不同的资产而不仅仅是比特币,通过转让来创建不同资产单元的价值。

    区块链技术的去中心化账本功能可以被用来注册、确认、转移各种不同类型的资产及合约。所有的金融交易都可以被改造成在区块链上使用,包括股票、私募股权、众筹、债券、对冲基金和所有类型的金融衍生品:期货、期权等。

    金融服务: 区块链的一个重要方向是利用数字货币与传统银行和金融市场做对接。

    Ripple Labs正在使用区块链技术来重塑银行业生态系统,使用Ripple支付网络可以让多国银行直接进行转账和外汇交易,而不需要第三方中介。Ripple也开发了一个智能合约和自己的程序语言Codius。

    Paypal在做比特币和传统金融和支付市场对接的解决方案。

    BTCjam在做基于区块链的去中心化P2P借贷。

    Overstock在做基于区块链的去中心化证券交易所Medici。

    智能资产: 区块链可以用于任何资产注册、存储和交易,包括金融、经济和货币的各个领域;有形资产、无形资产。区块链开辟了不同类型各个层次的行业运用功能,涉及货币、市场和金融交易。使用区块链编码的资产通过智能合约成为智能资产。

    智能资产是指所有以区块链为基础的可交易的所有资产类型,包括有形和无形资产。智能资产通过区块链控制所有权。并通过合约来符合现有法律,比如:预先建立的智能合约能够当某人已经偿还全部贷款后,自动将车辆所有权从财务公司转让到个人名下,这个过程是全自动的。 智能资产有可能让我们构建无须信任的去中心化资产管理系统。

    智能合约: 智能合约意味着区块链交易远不止买卖货币这些交易,将会有更广泛的指令嵌入到区块链中。传统合约是指双方或者多方协议做或不做某事来换取某些东西,每一方必须信任彼此会履行义务。而智能合约无须彼此信任,因为智能合约不仅是由代码进行定义的,也是由代码强制执行的,完全自动且无法干预。

    众筹: 基于区块链的众筹平台支持初创企业通过创建自己的数字货币来筹集资金,分发自己的“数字股权”给早期支持者,这些数字货币作为支持初创公司应获股份的凭证。

    比特币预测市场: 通过对现实生活中可能发生的事情进行结果预测,比如选举、体育赛事等。

    无须信任的借贷: 区块链的去信任机制网络是智能资产和智能合约发展的重要推动因素。这让不认识的人在互联网上把钱借给你,而你可以将你的智能资产作为抵押,这必然大幅降低借贷成本让借贷更具竞争力。非人为干预的机制也让纠纷率大大降低。

    以太坊:图灵完备的虚拟机 区块链技术将多个领域内的概念和操作结合在一起,包括计算、通讯网络、加密学和人工智能。 在区块链2.0中,我们需要通过智能合约和智能资产来记录和转移更多复杂的资产类型,我们就需要第三步—更强大的脚本系统—最终实现图灵完备(能够运行任何货币、协议和区块链)。以太坊就是一个区块链为基础的项目,旨在提供一个图灵完备脚本语言和图灵完备平台。

    展开全文
  • #资源达人分享计划#
  • 详解区块链智能合约

    千次阅读 2018-08-28 10:58:00
    全面阐述什么是智能合约之前,我们先回顾一下它创建的历史背景,有助于理解它的重要性。 1994年,计算机科学家和密码学家Nick Szabo首次提出“智能合约”概念。它早于区块链概念的诞生。Szabo描述了什么是“以...

    智能合约的历史

    在全面阐述什么是智能合约之前,我们先回顾一下它创建的历史背景,有助于理解它的重要性。

    1994年,计算机科学家和密码学家Nick Szabo首次提出“智能合约”概念。它早于区块链概念的诞生。Szabo描述了什么是“以数字形式指定的一系列承诺,包括各方履行这些承诺的协议”。虽然有它的好处,但智能合约的想法一直未取得进展——主要是缺乏可以让它发挥出作用的区块链。

    什么是智能合约

    上面提到了历史背景,下面从多个角度继续探讨。智能合约是一种特殊协议,旨在提供、验证及执行合约。具体来说,智能合约是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。

    智能合约包含了有关交易的所有信息,只有在满足要求后才会执行结果操作。智能合约和传统纸质合约的区别在于智能合约是由计算机生成的。因此,代码本身解释了参与方的相关义务。

    事实上,智能合约的参与方通常是互联网上的陌生人,受制于有约束力的数字化协议。本质上,智能合约是一个数字合约,除非满足要求,否则不会产生结果。

    智能合约如何运作?

    很多区块链网络使用的智能合约功能类似于自动售货机。智能合约与自动售货机类比:如果你向自动售货机(类比分类账本)转入比特币或其他加密货币,一旦输入满足智能合约代码要求,它会自动执行双方约定的义务。

    义务以“if then”形式写入代码,例如,“如果A完成任务1,那么,来自于B的付款会转给A。”通过这样的协议,智能合约允许各种资产交易,每个合约被复制和存储在分布式账本中。这样,所有信息都不能被篡改或破坏,数据加密确保参与者之间的完全匿名。

    虽然智能合约只能与数字生态系统的资产一起使用,不过,很多应用程序正在积极探索数字货币之外的世界,试图连接“真实”世界和“数字”世界。

    智能合约根据逻辑来编写和运作。只要满足输入要求,也就是说只要代码编写的要求被满足,合约中的义务将在安全和去信任的网络中得到执行。

    智能合约的优缺点

    就像任何其他新的系统协议一样,智能合约并不完美。使用智能合约有几个优点和缺点,包括更高的效率和缺乏监管。具体来说:

    使用智能合约的一些主要优势包括在处理文档时的更高效率。这归功于它能够采用完全自动化的流程,不需要任何人为参与,只要满足智能合约代码所列出的要求即可。结果是,会节省时间,降低成本,交易更准确,且无法更改。

    此外,智能合约去除任何第三方干扰,进一步增强了网络的去中心化。

    另一方面,智能合约的使用也会产生不少问题。一些缺点包括:人为错误、完全实施有困难、不确定的法律状态。

    虽然很多人把智能合约的不可逆转特性看作是它的主要好处,但也有人认为一旦出现问题无法修改。因为人类会犯错误,在创建智能合约时也一样,一些绑定协议可能包含错误,而它们是无法逆转的。

    此外,智能合约只能使用数字资产,在连接现实资产和数字世界时会出现问题。最后也是最重要的是,智能合约缺乏法律监管,只受制于代码约定的义务。缺乏法律监管可能会导致一些用户对网络上交易持谨慎态度,特别是它很重要的话。

    使用智能合约的优点是处理交易时效率更高,不可逆转,安全的交易以及全自动化流程。另外一个方面,缺点就是缺乏法律监管,人为的错误和实施有困难。

     

    展开全文
  • #资源达人分享计划#
  • 智能合约又称智能合同,是由事件驱动的、具有状态的、获得多方承认的、运行在区块链之上的、且能够根据预设条件自动处理资产的程序,智能合约最大的优势是利用程序算法替代人仲裁和执行合同。 简单说,智能合约是一...
  • 区块链智能合约的讲解

    千次阅读 2020-10-19 11:54:44
    智能合约在区块链上运行的应用或者程序。通常情况下,智能合约是一组具有特定规则的数字化协议,且这些协议能够强制化执行。这些规则由计算机代码预先定义,所有节点会复制和执行这些计算机源码。 智能合约不需要...
  • 基于区块链智能合约安全

    千次阅读 2018-09-12 10:14:34
    区块链技术最有前途的一个应用就是开发智能合约智能合约是自我执行合约,在智能合约中,合约条款由代码规定。基本上,这意味着可以用计算机程序编写具有法律效力的合约,而且这个合约可以自动执行。 至少1996...
  • 区块链智能合约实施规范,包括智能合约构建、触发、运行和评估过程。 区块链智能合约实施框架、合约接口调用、合约事件约束
  • 22个PPT深度剖析以太坊技术核心及最新进展,PPT内容涵盖以太坊技术原理、架构、工具;智能合作&DAPP;开发;安全与隐私;社区建设等最新技术进展,更有一大波基于以太坊的应用整装待发。
  • 区块链智能合约的关系

    万次阅读 2018-01-18 10:18:44
    它们唯一的共同点是,以太坊也是一个在区块链之上运行的加密资产。与比特币仅仅是一个加密货币不同,以太坊还有很多其他特性。正是这些特性,才使得以太坊成为了一个去中心化的超级电脑。理解 以太坊 之前,我们...
  • kickstart是利用稳固性开发的区块链智能合约众筹网络应用程序。 技术领域 -以太坊是一个具有智能合约功能的去中心化开源区块链。 -Mocha是用于Node.js程序JavaScript测试框架,具有浏览器支持,异步测试,测试覆盖...
  • 注意下方智能合约的位置,这个位置表明上方的应用(APP)必须通过智能合约来实现对应区块链网络的功能。 那么,我们看一个简单的例子,就是A转账给B,比特币和以太坊中大概都怎么实现的: 以太坊智能...
  • 近年来,区块链技术及其各种应用Swift发展。 由于具有破坏整个行业和跨国公司的能力,监管者已经意识到了其潜力... 本文旨在阐明区块链的复杂性,机遇和威胁,新加坡现行法律制度及其缓解固有法律风险方面的有效性。
  • 区块链技术和智能合约定义为存储在区块链中的特定类型的合约之后,我们质疑合约理论及其交易、信息不对称、公司或公司间关系的概念。 为了更好地了解区块链对特许经营网络的挑战并确定这些网络中实施的机会,...
  • 传统上,商业交易中,当两方交换价值时,他们需要共享交换后的价值以及交易条款和条件的表示。 如果他们不能完全相互信任,则各方将维护自己的交换记录-交易分类帐。 他们还保留自己管理合同交换价值的规则和流程...
  • Lottery-react是利用稳固性开发的区块链智能合约Web应用程序。 技术领域 -以太坊是一个具有智能合约功能的去中心化开源区块链。 -Mocha是用于Node.js程序JavaScript测试框架,具有浏览器支持,异步测试,测试覆盖率...
  • 暴走时评:印度最大信贷机构印度国家银行即将发布基于区块链智能合约beta版本,属于27家银行区块链社区的BankChain项目。该项目获得当地区块链初创企业Primechain Technologies的支持和参与。区块链技术可以让...
  • 随着区块链近年来热度的不断提高,智能合约也逐渐受到人们重视.智能合约是一段能够自动运行代码,允许...最后对智能合约的有效性、安全性以及隐私保护手段等方面进行了安分析,为部队应用区块链技术及智能合约提供参考.
  • 关注公众号并回复【Liquid】获取全文高清PDF2020年4月20日,国家发展改革委首次明确新型基础设施建设(简称新基建)的范围,将区块链视为新基建的核心技术和自主创新的重要突破口。...
  • 区块链智能合约介绍

    千次阅读 2020-08-05 11:12:19
    作者:qinyutong、chengyueqiang智能合约 (smart contract) 是一种由事件驱动的、具有状态的代码合约和算法合同 [11],随着以比特币为代表的区块链技...
  • 区块链智能合约自动化安全审计介绍   近期,区块链技术比较火,并不同的行业有所应用,如金融、游戏、版权、溯源等,其中出现过不少的安全问题,尤其是区块链的智能合约发展至今,暴露出的问题不少,智能合约的...
  • #资源达人分享计划#

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,883
精华内容 10,753
关键字:

区块链在智能合约方面的应用