solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity

一、智能合约Solidity开发工具

1、remix-ide http://remix.ethereum.org/ 在线版本,也可以去github下载安装到本地。开发、编译、发布、执行、测试

v2-ea93cb0e1639d9a050dad22ff72743a0_b.jpg

2、remix-ide-cn http://remix.hubwiz.com/ 在线中文版本,也可以去github下载安装到本地。支持开发、编译、发布、执行、测试 。这个有个好用的地方就是部署的合约可以直接在这里调用执行。

v2-c9277504b571eb32bc58088545f6f516_b.jpg

p.s. 一般打开链接是空白可以试试Ctrl+F5强刷几次试试。

3、Ethereum Studio 目前官网推出Ethereum Studio。 https://studio.ethereum.org/ 在线版本,还是比较好用,不过目前没看到可下载本地。

4、IntelliJIDEA Java开发者可以试试IDEA的插件,不过开发与编译好像要安装2插件才行。

二、智能合约Solidity入门

Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。Solidity与其它语言相关的特点?
它的语法接近于Javascript,是一种面向对象的语言。但作为一种真正意义上运行在网络上的去中心合约,它又有很多的不同,下面列举一些:

  • 以太坊底层是基于帐户,而非UTXO的,所以有一个特殊的Address的类型。用于定位用户,定位合约,定位合约的代码(合约本身也是一个帐户)。
  • 由于语言内嵌框架是支持支付的,所以提供了一些关键字,如payable,可以在语言层面直接支持支付,而且超级简单。
  • 存储是使用网络上的区块链,数据的每一个状态都可以永久存储,所以需要确定变量使用内存,还是区块链。
  • 运行环境是在去中心化的网络上,会比较强调合约或函数执行的调用的方式。因为原来一个简单的函数调用变为了一个网络上的节点中的代码执行,分布式的感觉。
  • 最后一个非常大的不同则是它的异常机制,一旦出现异常,所有的执行都将会被回撤,这主要是为了保证合约执行的原子性,以避免中间状态出现的数据不一致。

Hello Wolrd!
听起来高大上,其实入手玩起来也可以很简单:pragma solidity ^0.4.0; contract HelloWorld{ uint balance; function update(uint amount) returns (address, uint){ balance += amount; return (msg.sender, balance); } }
通过读取参数输入的新值,并将之累加至合约的变量中,返回发送人的地址,和最终的累计值。Solidity的完整语法:入门说明:

  • Solidity智能合约文件结构
  • 智能合约源文件的基本要素概览(Structure of a Contract)

值类型:

  • 类型
  • 布尔(Booleans)
  • 整型(Integer)
  • 地址(Address)
  • 字节数组(byte arrays)
  • 小数
  • 字符串(String literal)
  • 十六进制字面量
  • 枚举
  • 函数(Function Types)

引用类型:

  • 引用类型(Reference Types)
  • 数据位置(Data location)
  • 数组(Arrays)
  • 数据结构(struct)

杂项:

  • 映射/字典(mappings)
  • 左值运算符(Operators Involving LValues)
  • 类型间的转换(Conversions between Elementary Types)
  • 类型推断(Type Deduction)

单位:

  • 货币单位(Ether Units)
  • 时间单位(Time Units)

语言内置特性:

  • 特殊变量及函数(Special Variables and Functions)
  • 数学和加密函数(Mathematical and Cryptographic Functions)
  • 地址相关(Address Related)

进阶:

  • 入参和出参(Input Parameters and Output Parameters)
  • 控制结构
  • 函数调用(Function Calls)
  • 创建合约实例(Creating Contracts via new)
  • 表达式的执行顺序(Order of Evaluation of Expressions)
  • 赋值(Assignment)
  • 作用范围和声明(Scoping And Decarations)
  • 异常(Excepions)
  • 内联汇编(Inline Assembly)

合约详解:

  • 合约
  • 可见性或权限控制(Visibility And Accessors)
  • 访问函数(Accessor Functions)
  • 函数修改器(Function Modifiers)
  • 常状态变量(constant state variables)
  • 回退函数(fallback function)
  • 事件(Events)
  • 继承(Inheritance)
  • 接口(Abstract Contracts)

其它:

  • 库(Libraries)
  • 状态变量的存储模型(Layout of State Variables in Storage)
  • 内存变量的存局(Layout in Memory)
  • 调用数据的布局(Layout of CallData)
此文引用网络资源 https://www.tryblockchain.org/
hanko:以太坊区块链搭建与使用(一)-私有链​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(二)-私有链配置与启动​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(三)-联盟链​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(四)-以太坊钱包工具​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(五)-智能合约Solidity​zhuanlan.zhihu.com
hanko:以太坊区块链搭建与使用(六)-基于Java调用以太坊​zhuanlan.zhihu.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305453.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Disable anchor tag的javascript代码(兼容IE和Firefox)

对于anchor tags(<a></a>)&#xff0c;IE支持一个非标准的"disabled"属性&#xff0c;但支持也不完善&#xff0c;比如&#xff0c;如果这个anchor tage没有 "href" 值&#xff0c;IE会把这个anchor设置为灰色&#xff0c;当然不能点击&#x…

大气校正后的ndvi_大气校正常见错误处理方法及校正后检查

本文汇总了ENVI FLAASH大气校正模块中常见的错误&#xff0c;并给出解决方法&#xff0c;分为两部分&#xff1a;运行错误和结果错误。前面是错误提示及说明&#xff0c;后面是错误解释及解决方法。FLAASH对输入数据类型有以下几个要求&#xff1a;1、波段范围&#xff1a;卫星…

dotnet cli 5.0 新特性——dotnet tool search

dotnet cli 5.0 新特性——dotnet tool searchIntro.NET 5.0 SDK 的发布&#xff0c;给 dotnet cli 引入了一个新的特性&#xff0c;dotnet tool search&#xff0c;主要用于搜索 Nuget 上的 dotnet tool&#xff0c;这个命令会搜索 tool 的名称以及一些元数据&#xff0c; tit…

localhost 已拒绝连接_MySQL连接错误:Access denied for #x27;root#x27;@#x27;localhost#x27;

问题描述&#xff1a;笔者在Mac安装MySQL&#xff0c;但是当我连接到localhost本地服务器却被拒绝mysql -u root -p(1045, "Access denied for user rootlocalhost (using password: YES)")根据MySQL的反馈&#xff0c;可以得知&#xff0c;我输入的root密码应该不对…

汇率升值与通货膨胀

[注]:本文首发于我的个人博客——FantasySoft&#xff08;个人博客所在的服务器IP被封&#xff0c;郁闷中&#xff09; 花了一个下午时间&#xff0c;总算搬过来了&#xff0c;欢迎各位光临&#xff01; 12月5日&#xff0c;为期三天的中央经济工作会议在北京闭幕。接着&#x…

ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据

添加新云天气象主编微信或QQ&#xff1a;130188121&#xff0c;及时获取或发布气象升学、就业、会议、征稿及学术动态等信息&#xff01;通常情况下&#xff0c;要获取某个区域内的格点数据&#xff0c;如果要求不是很高&#xff0c;直接采取矩形框挑选方法——即锁定所需范围内…

2021技术领域趋势报告:Rust继续增长、低代码是重要趋势

喜欢就关注我们吧&#xff01;OReilly 发布了一份《2021 年编程、运维、AI 和云计算的发展方向》报告&#xff0c;该报告基于 OReilly 在线学习平台产生的数据&#xff0c;就技术行业的趋势进行了一番分析。编程语言方面&#xff0c;报告从使用情况、使用量的同比增长以及搜索查…

面试:一分钟自我介绍

一段短短的自我介绍&#xff0c;其实是为了揭开更深入的面谈而设的。一分钟的自我介绍&#xff0c;犹如商品广告&#xff0c;在短短六十秒内&#xff0c;针对“客户”的需要&#xff0c;将自己最美好的一面&#xff0c;毫无保留地表现出来&#xff0c;不但要令对方留下深刻的印…

python中list的意思_list在python中是什么意思

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置&#xff0c;或索引&#xff0c;第一个索引是0&#xff0c;第二个索引是1&#xff0c;依此类推。 Python有6个序列的内置类型&#xff0c;但最常见的是列表和元组。 序列都可以进行的操作包括索引&a…

cad必练10张图_CAD比例问题大详解!赶紧收藏!

下面我们来按照从小白的起点学习比例问题&#xff1a;对于比例问题&#xff0c;最关键的一点&#xff0c;就是要弄明白「现实世界」「CAD 的虚拟模型空间」「打印出来的图纸」这三个世界之间的关系。弄明白了这个&#xff0c;一切就迎刃而解了。「现实世界」和「打印出来的纸质…

腾讯招.NET5,居然要求精通MySQL,而不是SQLServer!

春节将至&#xff0c;短暂的2020年正式要宣告结束&#xff0c;展望2021&#xff0c;可谓风起云涌&#xff0c;可以预见.NET5和云原生将是大热话题&#xff0c;NET开发者该如何把握机遇&#xff1f;逛逛招聘网站&#xff0c;看看大厂招聘&#xff0c;这是市场风向标。该学习的东…

32位mysql安装包_MySQL安装指南(CPT103)

随着CPT课程逐步开课&#xff0c;小猿发现了Online 大概等于 Self Learning 的状况&#xff0c;IT相关课程的学生们只能野蛮生长了(悲)。MySql作为一款应用级的软件&#xff0c;在Windows系统上安装过程比较繁琐&#xff0c;写篇文章帮大家避些小猿踩过的坑。MySQL收费&#xf…

Apache ECharts顺利毕业,成为ASF顶级项目

喜欢就关注我们吧&#xff01;1 月 26 日晚&#xff0c;Apache 基金会官方宣布 ECharts 项目正式毕业&#xff0c;成为 Apache 顶级项目。ECharts 是一款基于 JavaScript 的数据可视化图表库&#xff0c;提供直观&#xff0c;生动&#xff0c;可交互&#xff0c;可个性化定制的…

契税申报期限_税局正式公告!财产和行为税合并纳税申报!附税种申报要点

税局正式公告&#xff01;财产和行为税合并纳税申报&#xff01;安徽省、重庆市等地&#xff0c;11月23日都发布了《关于实行财产和行为税合并纳税申报的公告》一、申报方式&#xff1a;财产和行为税合并申报 二、申报税种&#xff1a;申报缴纳城镇土地使用税、房产税、车船税、…

【转】我们到底为了什么钻研技术?

我们到底为了什么钻研技术?在努力工作、学习了5年之后&#xff0c;1-2-3最近突然感觉有些迷茫&#xff1a;我们钻研技术到底是为了什么&#xff1f;作技术能走多远&#xff1f;1-2-3写下了自己的一些感想&#xff0c;也期待着你的精彩留言.... 程序员真是一个特殊的群体。白天…

c++ 多重背包状态转移方程_【考前再叮嘱】陌生方程式书写

点击上方蓝字 关注“爱学化学”今日分享陌生方程式书写作者|何佳欢 它来了&#xff0c;它真的来了&#xff0c;万众瞩目的期中考试正在缓缓向我们走来&#xff0c;纵观往年试题&#xff0c;陌生方程式书写绝对是众多考点中的C位&#xff0c;尤其是陌生的氧化还原反应方程式书…

网络被屏蔽了怎么办_预埋的网线不够长,怎么办?

前几天直播的时候&#xff0c;有很多朋友发弹幕问小泽&#xff0c;家里预埋的网线发现不够长怎么办&#xff1f;还有些朋友问家里的线不小心被弄断了怎么办&#xff1f;对于这些网线不够长或者网线断了的问题&#xff0c;其实很简单&#xff0c;小泽总结出三种简单的方法。不同…

推荐:Redis桌面管理工具RedisDesktopManager

背景大家平常在开发的时候&#xff0c;Redis 肯定是必不可少的&#xff0c;那么平常使用的时候&#xff0c;我们就需要一款合适的IDE来操作&#xff0c;以提高效率。下面推荐下RedisDesktopManager 。简介Redis Desktop Manager官方版是一款简单快速、跨平台的Redis桌面管理工具…

ID,ClientID,UniqueID的区别

ID是设计的时候所指定的ID。 ClientID是当这个控件生成到客户端页面时候&#xff0c;需要在客户端访问时候用的。 UniqueID是当需要参与服务端回传的时候用的。 备注&#xff1a;当控件是子控件的时候&#xff08;例如在用户控件中的Button&#xff09;&#xff0c;ClientID在H…

python getattr_详解 Python 的二元算术运算,为什么说减法只是语法糖?

原题 | Unravelling binary arithmetic operations in Python作者 | Brett Cannon译者 | 豌豆花下猫(“Python猫”公众号作者)声明 | 本翻译是出于交流学习的目的&#xff0c;基于 CC BY-NC-SA 4.0 授权协议。为便于阅读&#xff0c;内容略有改动。大家对我解读属性访问的博客文…