区块链(七)智能合约(Smart Contract)
1. 智能合约(Smart Contract)
智能合约(Smart Contract),是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约部署在区块链节点,当智能合约中设定的事件被触发时,智能合约就会自动执行,此过程无需第三方参与。
2. solidity
在编写智能合约的语言当中最火的就是solidity语言。Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript 语言的影响,设计的目的是能在以太坊虚拟机(EVM)上运行。Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:
- 以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的
Address
的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)。 - 由于语言内嵌框架是支持支付的,所以提供了一些关键字,如
payable
,可以在语言层面直接支持支付,而且超级简单。 - 存储是使用网络上的区块链,数据的每一个状态都可以永久存储,所以需要确定变量使用内存,还是区块链。
- 运行环境是在去中心化的网络上,会比较强调合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络上的节点中的代码执行,分布式的感觉。
- 最后一个非常大的不同则是它的异常机制,一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。
代码示例:
pragma solidity >=0.4.22 <0.6.0;
contract returnmanyresults{//返回多个参数。function getmanagResult()public pure returns(uint a, uint b, uint c){return(1,2,3);}
}
3. 合约的编写、编译、测试
在区块链(二) 基于Ubuntu系统的以太坊客户端环境搭建中已经提到了本地Remix IDE的安装。在这里不在陈述。介绍一下Remix IDE的使用。
Remix IDE启动:
Remix IDE启动之后在浏览器打开:http://localhost:8080/进入如下界面:
和大多数 IDE 一样,最左边是文件浏览,中间是代码编辑区域,右边是功能区域,下边是日志区域。在右侧的功能区域,常用的是 Compile
、Run
及 Debuger
几个标签页(Tab)。在 Compile
页,会动态的显示当前编辑区域合约的编译信息,如显示错误和警告。编译的直接码信息及 ABI 接口可以通过点击 Details
查看到。
切换到Run界面进行合约部署和测试:
至此,智能合约的编写、编译,部署、测试已经完成。
下一篇文章我们介绍如何在以太坊客户端部署我们编译好的合约。进行合约部署之前我们要拿到合约的abi和字节码。
1.我们在智能合约的编译界面点击abi,会自动复制当前合约的abi。
2.合约的字节码则通过点击 Details
查看bytecode中的object。
区块链(七)智能合约(Smart Contract)相关推荐
- 区块链学习5:智能合约Smart contract原理及发展历程科普知识
☞ ░ 前往老猿Python博文目录 ░ 一.智能合约的定义 通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境.例如银行信用卡的自 ...
- 什么是智能合约,区块链和智能合约的关系及原理
智能合约(smart contract)这个术语至少可以追溯到 1995 年,是由多产的跨领域法 律学者尼克·萨博(Nick Szabo)提出来的.他的定义是"一个智能合约是一套以数字形式 ...
- 论文笔记:使用区块链和智能合约打击深度假冒视频
摘要 随着人工智能(AI)和深度学习技术的兴起,近年来虚假数字内容激增.假镜头.假图像.假音频和假视频(被称为深度假冒,Deepfake)可能是一种危险的现象,有可能改变真相,并通过伪造事实来侵蚀信任 ...
- [区块链安全-Damn-Vulnerable-DeFi]区块链DeFi智能合约安全实战-连载中
[区块链安全-Damn-Vulnerable-DeFi]区块链DeFi智能合约安全实战-连载中 前言 环境准备 1. unstoppable 任务分析 发起攻击 总结 2. Naive receive ...
- 详解区块链,智能合约,去中心化应用
文章目录 一.区块链是什么? 二.智能合约 三.去中心化应用 一.区块链是什么? 区块链本质上是一个去中心化的分布式账本数据库,目的是解决交易信任问题.广义来看,区块链技术是利用块链式数据结构验证与存 ...
- 什么是智能合约(Smart Contract)?
智能合约是什么? 在区块链上运行的程序,通常称为智能合约(Smart Contract)��.所以通常会把写区块链程序改称写智能合约.虽然比特币(Bitcoin)上也能写智能合约,但是比特币所支持的语 ...
- 区块链和智能合约的关系
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 尽管比特币(Bitcoin)和以太坊(Ethereum)是经常被一起提及的两个词,但实际上,比特币与以太坊有着很大的区别 ...
- 智能合约Smart Contract技术详解
文章目录 合约编写 基本介绍 构造方法 ipfs mint 提现 白名单 合约 前端 部署 验证合约代码 前端和合约交互 准备工作 获取已经mint了的数量 mint 合约编写 建议读者先了解下sol ...
- 众说区块链:智能合约在建材链上的落地实践
上期<众说区块链>讨论的主题是"数字货币交易所",围绕这个的相关主题,大家对这方面的相关话题展开了进一步的谈论. 本期<众说区块链>讨论的主题是" ...
- 区块链上智能合约的讲解
智能合约 智能合约是在区块链上运行的应用或者程序.通常情况下,智能合约是一组具有特定规则的数字化协议,且这些协议能够强制化执行.这些规则由计算机代码预先定义,所有节点会复制和执行这些计算机源码. 智能 ...
最新文章
- Android Handler sendEmptyMessageDelayed 和 sendEmptyMessage 的使用
- 山寨上网本溃败的两点教训
- 卡尔曼滤波 -- 从推导到应用(一) 转有关键思想 K增益是最小 贺一佳博士
- Qtum量子链研究院:Plasma技术详解(下篇)
- vs2008添加excel类编译错误解决方法
- PowerDesigner的文章
- java 获取类的注解_Java 自定义注解通过反射获取类、方法、属性上的注解
- 3D控件Aspose.3D 18年新版V18.1发布 | 附下载
- sap 服务器文件 暴露pdf地址,访问地址预览
- scratch编程钟表
- 十行代码替换证件照背景颜色
- 爬虫goodreads数据_精通技术的读者正在设计自己更好的goodreads版本
- dns被劫持怎么办?网页总是跳转到别的、你的DNS可能被劫持了!
- 重装系统后需要做什么?
- 百度ueditor粘贴word图片且图片文件自动上传功能
- 操作系统期末复习-第一章:操作系统概论
- c语言中 dbl2str,c语言中FLT_DIG和DBL_DIG是什么意思?~
- N、Z、Q、R 分别代表什么
- GIS大讨论(十):GIS专业就业之职业态度
- Java面试手写编程题(面试官经常让人手写)
热门文章
- 神经网络可以用来预测吗,神经网络做预测的原理
- 3DS MAX导出M3G动画
- 【星界探索——通信卫星】铱星:从“星光坠落”到“涅槃重生”,万字长文分析铱星卫星系统市场
- iphone邮箱看不到已发送_IPhone6Plus的邮箱没有发件箱怎么能看到已发送邮件?
- 浏览器 登录 路由器(网络状态,设备管理,路由设置)
- 正则表达式排除一些关键字
- 旺佐茶铺港式奶茶加盟
- Hibernate里插入oracle数据出现:ORA-01747: invaid user.table.column, table.column, or column specification
- 【Spring MVC拦截器+logback日志+自定义注解】实现用户鉴权登陆和访问日志记录
- 不畏失败,迎接每一个新的挑战