-
智能合约
2021-01-20 13:44:24智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。 协议 ... -
智能合约那些事儿
2020-03-01 18:48:50智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。智能合同的目的是提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。 智能合约...目录
1、智能合约是什么
维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。智能合同的目的是提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。
智能合约其实是“执行合约条款的计算机交易协议”。区块链上的所有用户都可以看到基于区块链的智能合约。智能合约可以是基于区块链的,但是智能合约在区块链之前就一直存在,它并不是区块链的专属技术或专属概念。
2、开始写智能合约之前,需要准备什么
a、搭建以太坊开发环境
验证安装solidity编辑器是否成功
C:\Users\ccb>solcjs -Version 0.6.3+commit.8dda9521.Emscripten.clang
检查web3是否安装成功的正确姿势:
C:\Users\ccb>npm view web3 --version 5.6.0
3、我写的第一份智能合约
pragma solidity ^0.4.0; //我写的第一份智能合约 contract SellApple { //状态变量 uint appleSize; //苹果个数 //函数--智能合约中的一个可执行单元 function SellApple(unit size,unit per) returns(unit sum){ //给定交易数量和单价,返回总价 sum = size * per; } //事件 event stopSellor(unit managerMessage); //结构体类型 struct sellor{ String name; unit age; unit salary; } //枚举类型 enum Position{no,yes} }
-
区块链——智能合约
2021-01-16 22:16:01智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。 ——智能...智能合约(英语:Smart contract )是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。
智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。
——智能合约·百度百科区块链领域的智能合约特点: 1.规则公开透明,合约内的规则以及数据对外部可见; 2.所有交易公开可见,不会存在任何虚假或者隐藏的交易。 总的来说就是去信任,签订合约的双方只需要相信区块链系统就行了。
智能合约使用“Solidity”语言进行编码,与传统合约相比具有许多优势: 不依赖第三方执行合约。消除中间人,大大减少了花费在合约上的总金额。 消除第三方供应商也意味着合约验证和执行的整个过程随着用户间的直接交易而变得快速。 由于合约条款不能更改,用户受骗的风险较小。智能合约不受各种人为干预。 智能合约不容易出现断电、节点故障等问题。合约保存在分布式账本上时,不存在放错或丢失的风险。 连接到网络的每个设备都有一份合约副本,并且数据会永远保存在网络上。 参考https://www.zhihu.com/question/43404157/answer/193952393
-
Fabric学习笔记-智能合约
2018-04-27 13:59:46智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转,Fabric为智能合约提供了一个可信的执行环境。Fabric下的智能合约Chaincode是Fabric下智能合约的代码实现,是一段在区块链上验证,存储和...本文介绍了什么是智能合约,以及如何在Fabric下编写一个简单的智能合约Demo。
什么是智能合约?
智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转,Fabric为智能合约提供了一个可信的执行环境。
Fabric下的智能合约
Chaincode是Fabric下智能合约的代码实现,是一段在区块链上验证,存储和执行的代码,只有通过Chaincode才能与Fabric网络进行交互。
在Fabric下又分为系统Chaincode和普通Chaincode。
- 系统Chaincode运行于peer节点内而非一个隔离的容器中,没有生命周期的概念,用于实现一些系统行为。
- 普通Chaincode运行在一个单独的容器中,对外提供操作Fabric网络的接口,有打包、安装、实例化和升级四个生命周期并且有相应的函数提供调用,操作更加的灵活也是我们通常所指Chaincode。
Chaincode的运行过程
- Channel负责连接不同的Peer,同步连接到的Peer对Chaincode的执行结果,相当于将一些节点划分为一个子集同时同步Chaincode的执行结果。
- Endorser负责执行Chaincode。
- Orderer负责对Chaincode的执行结果进行共识,目前支持solo/kafka/sBFT三种共识方式。
- Committer负责将Chaincode经过共识后的结果写入Ledger。
编写Chaincode
Chaincode必须实现两个接口。
type Chaincode interface { // 初始化⼯作,⼀般情况下仅被调⽤⼀次,升级时也会调用该函数 Init(stub ChaincodeStubInterface) pb.Response // 查询或更新world state,可多次被调⽤ Invoke(stub ChaincodeStubInterface) pb.Response }
下面是一个最小智能合约所需要的结构。
package main import ( "fmt" "github.com/hyperledger/fabric/core/chaincode/shim" ) type SimpleAsset struct {} func (t *SimpleAsset) Init(stub shim.ChaincodeStubInterface) peer.Response {} func (t *SimpleAsset) Invoke(stub shim.ChaincodeStubInterface) peer.Response {} func main() { if err := shim.Start(new(SimpleAsset)); err != nil { fmt.Printf("Error starting SimpleAsset chaincode: %s", err) } }
具体的业务逻辑都在Invoke这个函数里面进行编写。
首先,我们完善一下Init函数
func (t *SimpleAsset) Init(stub shim.ChaincodeStubInterface) peer.Response { args := stub.GetStringArgs() if len(args) != 2 { return shim.Error("Incorrect arguments. Expecting a key and a value") } // 实例化的时候初始化一下状态 err := stub.PutState(args[0], []byte(args[1])) if err != nil { return shim.Error(fmt.Sprintf("Failed to create asset: %s", args[0])) } return shim.Success(nil) }
接着在Invoke里编写业务逻辑
func (t *SimpleAsset) Invoke(stub shim.ChaincodeStubInterface) peer.Response { fn, args := stub.GetFunctionAndParameters() var result string var err error if fn == "set" { result, err = set(stub, args) } else { result, err = get(stub, args) } if err != nil { return shim.Error(err.Error()) } return shim.Success([]byte(result)) }
Invoke根据不同的参数决定调用查询或者是设置状态。
编写set和get函数
func set(stub shim.ChaincodeStubInterface, args []string) (string, error) { if len(args) != 2 { return "", fmt.Errorf("Incorrect arguments. Expecting a key and a value") } err := stub.PutState(args[0], []byte(args[1])) if err != nil { return "", fmt.Errorf("Failed to set asset: %s", args[0]) } return args[1], nil } func get(stub shim.ChaincodeStubInterface, args []string) (string, error) { if len(args) != 1 { return "", fmt.Errorf("Incorrect arguments. Expecting a key") } value, err := stub.GetState(args[0]) if err != nil { return "", fmt.Errorf("Failed to get asset: %s with error: %s", args[0], err) } if value == nil { return "", fmt.Errorf("Asset not found: %s", args[0]) } return string(value), nil }
github上有完整代码,代码非常简单就是根据命令查询或者设置世界状态。
执行效果如下图:
这样就在Fabric上实现了一个简单的智能合约。
https://zhuanlan.zhihu.com/p/33750599
-
智能合约开发solidity编程语言实例
2021-01-08 07:19:58智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。智能合同的目的是提供优于传统合同方法的安全,并减少与合同相关的其他交易成本。 由于... -
区块链 智能合约 执行原理
2020-12-17 15:31:57智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 简单理解的话,你可以把自动售货机看成一个销售商品的智能合约,执行的就是你和机器主人之间关于如何购买一瓶饮料的合约。 2. ...一、 智能合约
1. 什么是智能合约
从技术角度来说,智能合约可以看作一种计算机程序,这种程序可以自主地执行全部或部分和合约相关的操作,并产生相应的可以被验证的证据,来说明执行合约操作的有效性。
智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。
简单理解的话,你可以把自动售货机看成一个销售商品的智能合约,执行的就是你和机器主人之间关于如何购买一瓶饮料的合约。
2. 为什么要智能合约
智能合约看上去就是一段计算机执行程序,满足可准确自动执行即可,那么为什么用传统的技术为何很难实现,而需要区块链技术等新技术呢?
以太坊图灵完备的智能合约丰富了区块链从比特币单一数字资产去中心化转移到去中心化的全球分布式计算机变为可能,虽然在以太坊网络运行代码成本比较高。
二、智能合约的工作原理
1. 构建合约
多方用户共同参与制定一份智能合约,其中明确规定了交易双方的权利和义务,开发人员将这些权利和义务以电子化的方式进行编程,代码中包含会触发合约自动执行的条件。
2、存储合约
合约通过P2P网络扩散并存入区块链,全网的各个节点都可以接收到这份合约。
发布智能合约的时候需要消耗一定的通证,而消耗通证的数量是根据智能合约的难度来决定,就是说这个智能合约的处理逻辑越长、越多,那么你消耗的通证就越多。
3. 执行合约
智能合约会定期检查是否存在相关事件和触发条件,将满足条件的事件推送到待验证的队列中,区块链上的验证节点先对事件进行签名认证,以确保其有效性,等大多数验证节点对该事件达成共识,智能合约将成功执行,并通知用户。
EVM
EVM是一个合约虚拟机,它用于执行智能合约,存在于每一个挖矿节点中。
当一份智能合约被触发的时候,智能合约虚拟机就会执行智能合约中的操作。
三、参与
1. 公链
对于以太坊这样的公链来说,任何用户任何时候都可以编写智能合约部署到以太坊上。
有钱可以部署在公链,公链花真金白银的ether。
没钱自己玩部署在私有链,私链测试似的随便玩,
2. 联盟链
对于fisco bcos这样的联盟链来说,智能合约都是联盟链维护者提前编写和部署的,其它成员并不能自主编写参与部署?
只要有权限,就可以自主参与编写与部署。
智能合约这么火,但是你连它的执行原理都不知道?
https://www.sohu.com/a/260072502_100271565
智能合约是如何被执行的?
-
区块链(BlockChain)智能合约
2020-06-24 14:55:18智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。数字形式意味着合约不得不写入... -
可逆加密 不要太长_未来加密数字世界的操作系统:智能合约
2020-12-10 20:42:56智能合约允许在没有第三方的情况下进行可信交易,这种交易一旦执行不可逆转。通俗地说,就是一旦开启智能合约这台机器之后,就再也不会停机了,它会按照一开始就设定的方式运转。支持智能合约的公链在比特币发展早期... -
区块链(七)智能合约(Smart Contract)
2019-11-27 16:23:04智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约部署在区块链节点,当智能合约中设定的事件被触发时,智能合约就会自动执行,此过程无需第三方参与。 2. solidity 在编写智能... -
智能合约能否成为未来区块链主导
2020-08-13 13:42:20智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 什么意思呢?我们举个例子: 比如甲和乙打赌一场球赛的输赢,结果甲赢了,而乙却反悔了,不愿意付钱。按照传统的合约,可能甲只能去法院... -
以太坊智能合约入门项目-众筹项目
2018-09-02 23:39:13智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。 以上解释来自于维基百科 由于缺少可信的执行环境,智能合约并没有被应用到实际产业中,自... -
daisy智能合约会不会有跑路风险?!
2021-01-05 10:03:02智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。 DAISY... -
EOSIO开发(八)- 智能合约基础概念
2018-07-01 20:46:46什么是智能合约 智能合约的概念早在上世纪90年代就已经被提出来,自从以太坊将其发扬光大以后,智能合约...智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 例如小张和小王掷骰子,约... -
区块链智能合约APP功能介绍
2021-01-20 16:56:25智能合约,是一种通过区块链实现的技术,旨在以信息化方式传播、验证或执行合同的计算机协议,它允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 区块链,分布式的数据库,任一方可访问整个... -
以太坊学习笔记(五)——智能合约与Dapp开发环境与工具
2018-09-14 15:34:12智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1994年由Nick Szabo首次提出。 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。 DApp ... -
【链客】&【星云链】联合举办搭建智能合约,领取NAS奖励!
2019-06-05 10:48:22智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于1995年由Nick Szabo首次提出。 智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易... -
浅入浅出智能合约 - 概述(一)
2019-10-03 14:15:20但是它在 20 多年前就已经被非著名计算机科学家Nick Szabo提出了,它将智能合约描述为一种以信息化方式传播、验证或者执行合约的计算机协议,能够允许在没有第三方的情况下进行可信的交易,并且这些交易是无法被追踪... -
solidity合约结构
2020-07-24 11:28:06一种旨在以信息化方式传播、验证、或执行合同的计算机协议,它允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 从技术上,通常我们把在区块链上运行的程序称为智能合约 1. 一个简单的智能合约 ... -
区块链女侠杨霞:为区块链代码提供军事级的安全检测丨蚂蚁区块链大赛成都站火热报名...
2019-06-01 10:04:54转自巴比特原文作者:邱祥宇智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。那么智能合约程序存在哪些安全问题?出了安全问题,怎么办?如何用形式化验证... -
浅谈GaiaWorld神盾协议的技术价值
2018-07-16 13:46:54微信公众号:GAIAWorld神盾协议的前身:智能合约在解释...智能合约允许在没有第三方的情况下进行可信交易。这些交易可追踪且不可逆转。毫无疑问,智能合约是一个伟大的创新,不为人知的是它其实早诞生于1994年,但... -
区块链的基础问题(六)
2020-09-19 09:15:07智能合约允许在没有第三方的情况下进行可信交易。 2、 时间戳的价值是什么? 区块链通过时间戳保证每个区块依次顺序相连。时间戳使区块链上每一笔数据都具有时间标记,任何人无法篡改。 3、 区块链的分层结构是什么... -
EOS开发入门
2019-01-10 11:04:54EOS开发入门 在上一篇文章《EOS开发环境搭建...智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。 1.1 所需知识 熟悉或了解C++14的基本语法,这部分技能需要掌握,短时间内无法搞定...