范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Solidity极速入门基础备忘

  Solidity是一门专为实现智能合约而创建的高级编程语言,在以太坊虚拟机Ethereum Virtual Machine (EVM)上运行。它与C++,Python以及JavaScript颇有渊源。
  比较重要的特性:提供payable等关键字,在语言层面支持支付提供address数据类型,用于定位用户和合约账号使用区块链进行数据存储。任何数据的每一个状态都可以永久存储,因此使用时需要注意确定变量是使用内存还是使用区块链存储一旦出现异常,所有的执行都会被撤销,以确保合约执行的原子性,保证数据一致性一个简单的例子// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.7.0 <0.9.0;  contract BasicTest {      uint myStoredData; 	     function myGet() public view returns (uint) {         return myStoredData;     }      function mySet(uint what) public {         myStoredData = what;     }  }
  代码编译部署到区块链上之后,任何人只要知道了该合约的地址及函数签名,都可以修改myStoredData数据。比如,该合约地址为 0xaE036c65C649172b43ef7156b009c6221B596B8b 那么编写如下代码:// SPDX-License-Identifier: GPL-3.0  pragma solidity >=0.7.0 <0.9.0;  interface BasicTest {     function myGet() external view returns (uint);     function mySet(uint w) external; }  contract Super {     BasicTest bt;     function setAddr(BasicTest addr) public {         bt = addr;     }      function test(uint w) public returns (uint) {         bt.mySet(w);         return bt.myGet();     } }
  输入参数为合约地址,执行setAddr;然后输入欲改值1356,就可以修改了。
  数据类型
  布尔bool,整型int/uint,定长fixed/ufixed,地址address,定长字节数组,变长字节数组,枚举
  需要说明的是:整型支持关键字uint8到uint256,int8到int256。可调配的选择项非常丰富,这对于在资源消耗相对敏感的区块链环境中很重要。同理,还有定长数组,包括bytes1, bytes2, bytes3, ..., bytes32。地址类型拥有成员变量balance和transfer。如果你之前没有了解过Solidity, 是不是觉得这个特性相当amazing ;) 她的确就是的,这给交易提供了天然的支持。函数function () {internal|external} [pure|constant|view|payable] [returns ()]
  函数的可见性
  可指定为external, public, internal, 或者private
  对于public和private,相信学过其他高级语言的人都能明白:public修饰的变量和函数,任何用户或者合约都能调用和访问。private修饰的变量和函数,只能在其所在的合约中调用和访问,即使是其子合约也没有权限访问。internal 和 private 类似,不过, 如果某个合约继承自其父合约,这个合约即可以访问父合约中定义的"内部"函数。external 与public 类似,只不过这些函数只能在合约之外调用 - 它们不能被合约内的其他函数调用。
  函数的状态可变性pure:纯函数,不允许修改或访问状态view:不允许修改状态payable:允许从消息调用中接收以太币Etherconstant:与view相同,一般只修饰状态变量,不允许赋值(除初始化以外)
  如果你试图在一个用view或者pure修饰的函数体内修改变量,或者在一个未使用payable修饰的函数体内发送ether,那么编译的时候,就会给出错误。内部函数调用
  仅仅发生在一个合约内部。可以理解为"方法调用"。外部函数调用
  外部函数调用使用消息机制实现。外部调用事件消息包括了发送者,接收者,内容,ether数量,以及gas。
  一个合约调用其它合约的函数,只有通过外部函数调用的方式,没有其它方式。
  调用一个public函数,分别使用内部调用和外部调用,对比一下:
  内部调用function g1(uint a) public returns(uint ret) {     return 44; }  function y2() public returns(uint ret) {     uint a = g1(100);     for(uint i=0; i < 30; i++) {         g1(100);     }     return a; }
  外部调用function g1(uint a) public returns(uint ret) {     return 44; }   function y1() public returns(uint ret) {     uint a = this.g1(100);     for(uint i=0; i < 30; i++) {         this.g1(100);     }          return a; }
  可以看出,所消耗的gas差别很大。
  进一步试验contract FunctionTest{     uint public v1;     uint public v2;     function internalFunc() internal{         v1 = 10;     }     function externalFunc() external returns (uint res){         v2 = 20;         return v2;     }     function resetV2() public {         v2 = 0;     }     function callFunc() public {         //直接使用内部的方式调用         internalFunc();  //<--- 合约内部直接调用,正确         //不能在内部调用一个外部函数,会报编译错误。         //Error: Undeclared identifier.         //externalFunc(); //<--- 外部合约不可以调用         //不能通过`external`的方式调用一个`internal`         //Member "internalFunc" not found or not visible after argument-dependent lookup in contract FuntionTest         //this.internalFunc();  //<--- this.相当于外部调用         //使用`this`以`external`的方式调用一个外部函数         this.externalFunc();     } } // 合约的继承 contract Son is FunctionTest {     function callInternalFunc()  public{         internalFunc();  // 可以继承父合约的内部方法         this.externalFunc();     } } contract FunctionTest1{     uint public v3;     function externalCall(FunctionTest ft) public {         //调用另一个合约的外部函数         v3 = ft.externalFunc();         //不能调用另一个合约的内部函数         //Error: Member "internalFunc" not found or not visible after argument-dependent lookup in contract FuntionTest         //ft.internalFunc();     }     function resetV3() public {         v3 = 0;     } }
  最后,再看一个发送ether的例子。可以指定gas。具体如何估算,留个悬念,请见下回分解吧。function g(uint a) public payable returns(uint ret) {     return 44; }  function y() public payable returns(uint ret) {     uint a = this.g{value:11,gas:5800}(100);     return a; }  constructor() payable{} //必不可少
  注意: payable关键字

13代ESCPU比正式版还强?999元频率4。8G核显32EU价格便宜引发混乱粉丝们都打算过年了吧,老魔还在折腾一台OC3的蜂鸟IPRO的7。5L机箱的小电脑。顺便把13400ES的评测,重做下细节分享,简单公布下配置CPU13400ESQO0PS6C12T超级月亮流星雨2023年天象剧场节目单来了2023年天象剧场节目单来了今年的超级月亮出现在8月31日,并且8月2日和9月29日的两次满月距离地球也比较近。9月29日正好是中秋佳节,当天17时58分,将有一轮又大又圆的月亮从2023年天象剧场节目单来了今年的超级月亮出现在8月31日,并且8月2日和9月29日的两次满月距离地球也比较近。9月29日正好是中秋佳节,当天17时58分,将有一轮又大又圆的月亮从东方升起。恰逢农历兔年,玉兔哈布斯堡王朝转型奥匈帝国,为何无法阻挡衰落的命运今天谈及奥地利,大多数人的第一印象恐怕是维也纳金色大厅的新年音乐会以及那些由莫扎特贝多芬谱写的世界名曲,似乎很难将这个充满艺术气息的国家与曾经的欧洲霸主联系在一起。维也纳金色大厅。市人大代表石嘉坚持服务实体打好助企纾困组合拳今年的政府工作报告在高效统筹疫情防控与经济发展方面提到了助企纾困政策落实。市人大代表中信银行股份有限公司天津分行党委书记行长石嘉表示,2023年区域经济发展仍将面临众多挑战,中信银2023年一季度,值得期待的新能源车有哪些?进入2023年,你首选的购车方案是什么?燃油车or新能源车?来自乘联会的数据显示,2022年国内新能源乘用车累计零售567。4万辆,同比增长90。0,占到乘用车总销量的27。6,说高端铜合金材料龙头,博威合金长坡厚雪,行业先锋厚积薄发(报告出品方分析师东方证券刘洋李一冉孟宪博滕朱军)一博威合金高端铜合金材料龙头1。1公司介绍高端铜合金板带棒材线材龙头博威合金为中国高端铜合金板带棒材线材龙头,于1993年在宁波创基金指数大涨,要不要减仓今天市场高开,开盘后不久就一举突破了3226点,这是非常重要的,说明自2885点以来,到现在为止都是处于上升周期内,如果把这一段时间看作是一浪的话,后面有可能有二浪回调,然后才开启冬游蒙顶山开启雪地遛娃新模式欢迎关注shijiechayuanms蒙顶山茶中国十大茶叶品牌蒙顶大雪白雪皑皑纷纷扬扬当雪从空中飘落覆盖整个蒙顶山此时这里是童话世界冰雪天堂大雪辞旧迎新看到雪总是激动惊喜的大雪DA阿里乡村特派员加速农村数字化蝶变,获评2022年度三农人物1月15日晚,2022年度三农人物推介正式揭晓,阿里巴巴乡村特派员团队和七一勋章时代楷模获得者张桂梅,马背上的网红副局长贺娇龙等代表获得这一殊荣。其中,阿里乡村特派员团队获得年度致Guggenheim下调特斯拉目标价至89美元当地时间周五,美国股市收高,市场聚焦华尓街大行财报。Guggenheim下调特斯拉目标价至89美元。德国金融科技公司Mondu获1,300万欧元A轮融资。聚焦大行财报美股收高美股周
初高中课本中有哪些知识,实际上是错误的呢?作为学化学的同学,等你到了大学或者实际工作的时候,就会发现,一部分你在初高中学习的化学知识都是错误的,而且错误的相当离谱就举一个最简单的例子。无论是初中还是高中都会接触到氧化铝,然家长应该让孩子不和成绩差的同学玩吗?你怎么看?家长不能因成绩好坏评价一个人,要正确引导孩子去对待孩子之间的友谊。成绩差的孩子,也有其闪光点成绩优异的孩子同样有不足之处。因此,家长宜以取人之长,补己之短的观点,去做好自己孩子的导为什么有人觉得很多大学老师的板书不如中学老师,甚至不如小学老师?不是很多人觉得大学老师板书不如中学老师,实际情况就是这样的。由于大学老师与中小学老师他们的来源是有一定差异的,所以大学老师,从一定意义上来讲,他们的感受不如中学老师,那么主要的原因初中起点的五年制大专和高中起点的三年制大专有什么不同?32这种初中起点的5年一贯制大专和高中起点的三年制大专,其实是不同的。我是留学李玲芬老师,我从几点简单分析一下1起点不同32大专是初中毕业后,就可以开始读的,读这种一贯制大专的学生如果学校长期依赖行政化体制运行,强化年级管理,教研组日益没落,这对学样发展有利吗?钟洪尧说,以职称评审来说,自实行评聘合一的政策后,每个学校的各级岗位名额极其有限。事实上,能参加职称评聘的教师早已在校内进行过一轮残酷的筛选。为了在职称评聘时有分量更重艺压群雄的筹有没有什么温和不刺激适合学生党的洗面奶?你好,首先的话很高兴可以来解答你的问题。关于洗面奶的话,前前后后的话我也有换过很多种,像是现在属于秋冬季节,很多人使用洗面奶洗脸之后都会有脸部拔干的感觉,就很难受。那么我就将我自己考研成绩出来后做什么?如果说高考是人生面临的第一大考验,那么考研则是走出大学校园后即将迈过的第一道坎。在研究生考试初试成绩公布后,考生即将可以查询到自己的研究生考试初试成绩。考研成绩公布后应该做什么?我三菱帕杰罗V97和普拉多哪个更好?为什么?谢谢悟空邀请。这两台车永远都是被拿出来做对比的!而且,两派的支持力量都很强,各自都有理,性价比车身结构四驱形式舒适性保养成本油耗,甚至情怀,都要拿出来说事。说到我的选择,40几万的一直瘦的人有什么共同的习惯?我有个女同事,别看90来斤,饭量却比大多数男人还大。她在单位食堂打饭的盘子,高高在上那一堆饭菜,简直不像一样一样夹的,像用大方铲,还用脚加了把劲,从地上铲了一铲子,倒进盘子的。而且为什么感觉中国卫星多在太原和酒泉发射?酒泉卫星发射中心的场地不在甘肃,而是在内蒙古。太原卫星发射中心的场地不在太原,而是在忻州。都误会了。这些位置啥的,重要性啥的,少讨论,大多涉密,中国人要有国家安全意识现在我国建成了张常宁大概率继续为中国女排征战国际大赛,这是爱国的表现吗?不能说不爱国吧,但这也是她自己的选择。因为她现在二十六岁,年龄不算大,还能再干三年,参加完巴黎奥运生孩子正好。张常宁实力不错,未来三年继继打球的话一是延续自己的知名度,第二也能让自