zoukankan      html  css  js  c++  java
  • 《区块链DAPP开发入门、代码实现、场景应用》笔记2——Solidity实现简单的智能合约

       本节仅以一个简单的智能合约示例,介绍智能合约的基本组成元素,本合约定义一个uint类型的变量,以及对应这个变量的读写函数。

    01     pragma solidity >=0.4.0 <0.6.0;                                     
    02    
    03     contract SimpleStorage {                                       //使用关键字contract定义合约结构体
    04         uint storedData;                                                //定义一个变量
    05    
    06         function set(uint x) public {                                      //定义关于该变量的设置函数
    07             storedData = x;                                       
    08         }
    09    
    10         function get() public view returns (uint) {    //定义关于该变量的读取函数
    11             return storedData;                                 
    12         }
    13     }
    

        代码第1行是指明语法解释使用的编译器版本;目前以太坊的智能合约虚拟机仍然在开发升级中,尚未有release版本,不同版本之间的API变动比较大,因此在编写智能合约时,必须指明合约逻辑使用的API的版本号;代码第3行通过contract关键字,声明了一个智能合约结构体,可以将该关键字与面向对象编程的class做类比,contract的设计模式和方法重载,父子继承等特性,与面向对象的设计非常接近,因此说Solidity作为一种高级的编程语言,极大的降低了对以太坊公链编程的难度,就像面向对象编程的Java语言比起汇编语言来讲,大幅降低了程序开发的门槛一样。

       代码第4行定义了一个成语变量,该变量的可见范围尽在constract的大括号之内;第6~7行代码定义了一个函数,该函数有可见范围的修饰符public,关于可见范围的详细解释放在第3章中,在此读者仅仅需要了解,该描述符说明该函数可以被区块链以外的系统通过Web 3.0接口调用,也可以通过以太坊内的其它智能合约调用。

    代码10~12定义了一个读取函数,函数的可视范围也是public,但是这个函数因为没有修改区块链上的任何数据和状态,因此可以将该函数定义为view,类似于其他编程语言的readonly属性,同时在函数的最后定义了函数的返回类型

        这个智能合约相对简单,仅仅是将一个uint的数据保存在区块链分布式账本中的合约。任何账户都可以读写这个数据,本示例并没有对数据做任何访问限制,这意味着任何人,任何账户都可以读取和修改这个数据,在后面的章节中,会详细介绍数据的访问权限和安全性问题。

    2020区块链各种应用都上马了,跟我一起学《区块链DAPP开发入门、代码实现、场景应用》吧。

  • 相关阅读:
    [题解]AtCoder Beginner Contest 174
    [高精取模]
    C++知识点—对拍
    C++知识点 STL容器3—map && pair
    致远星的搜索战争 T3 星际穿梭 题解
    洛谷 7月月赛 Div.2 T1 可持久化动态仙人掌的直径问题
    T139631 T3 阶乘之和
    C++知识点 STL容器2—set
    【2020-08-10】轻易的评价反而会阻碍成长
    【2020-08-09】人生十三信条
  • 原文地址:https://www.cnblogs.com/liqiang001/p/11731173.html
Copyright © 2011-2022 走看看