区块链智能合约Coursera(第二周)Solidity

课程链接 https://www.coursera.org/learn/smarter-contracts/home/week/2

为自己学习记的笔记,翻译可能存在问题,望谅解。

Solidity

目录

结构 Structure

基本数据类型和语句 (Bidder Data & Functions Demos)

特定数据类型(第1部分)(Coin Demo)

特定数据类型(第2部分)(Coin Demo cont.)

数据结构(第1部分)(BallotV1 Demo)

数据结构(第2部分)(StateTransV2 Demo)

访问修饰符和应用程序 Access Modifiers & Applications


结构 Structure

我们将使用Solidity作为实现智能合约的高级语言。 Solidity是一种高级语言,是JavaScript,Java和C ++的组合。 它是专门设计用于编写智能合约并针对以太坊虚拟机的。
智能合约的格式就像面向对象编程风格中的类定义。
在本课程中,我们将通过两个特定的问题来学习Solidity的重要功能以及智能合约的开发。 为了创建和查看智能合约,我们将使用Remix Web IDE for Solidity。 有许多可用的IDE, 我们选择使用Remix,它不仅提供编译器,而且提供运行时来测试您要设计的智能合约。 最重要的是,它在计算机上无需任何软件隔离即可工作。 Remix支持 免费的运行和测试环境,JavaScript VM,注入Web3(例如Metamask)和Web3 Provider,例如,本地运行的以太坊节点。
对于此模块,我们将仅使用JavaScript环境。

学习目标:
1)能够讨论Solidity的元素,
2)使用Solidity代码说明数据类型和数据结构以及函数,枚举,修饰符和事件。
3)将这些概念应用于设计,开发,部署和测试智能合约。

更多智能合约的结构细节

1. 数据或状态变量;
2. 函数:
    a. Constructor 构造函数,默认的或用户指定的,只有一个,表示它不能重载。
    b. Fallback 函数,具有匿名 anonymous 函数的强大功能。
    c. View 函数
    d. Pure 函数,无状态更改,它根据值,示例和数学函数进行计算。
    e. Public 函数,可以从外部可访问,有两笔交易,状态变化记录在区块链上。
    f.  Private 函数,仅可通过当前合约访问。
    g. Internal 函数,可在当前合约和继承 inherited 合约内部访问。
    h. External 函数,只能从智能合约外部访问
3. 用户定义的结构体和枚举类型。
4. 修饰符。
5. 事件。

除了其显式内容外,智能合约还可以继承其他智能合约,如以下示例所示。
在这里,标准策略合同定义了适用于所有州的基本策略,该基本策略由NYPolicies智能合约继承,可以在其中添加更多策略。

智能合约函数定义
函数定义类似于任何其他高级语言中的函数。
函数名 function header 和功能代码。
功能代码 function code 包含本地数据 local data 和用于处理数据并返回处理结果的语句。

函数名可以像匿名的noname函数一样简单,而复杂的函数名则包含许多详细信息。 

这是对函数名中每个项目的更多说明:
function 是所有函数开头的关键字。 参数 paramwters 是任意数量的类型标识符,例如,Uint。
return 参数,返回值可以指定为一对类型标识符或仅指定类型类型。 如果仅指定类型,则必须使用return语句显式返回它。

如果在return语句中指定了类型和标识符,则该函数中标识符所发生的任何状态链 statechain 都会自动返回。
与仅允许一个返回值的普通编程语言不同,可以返回任意数量的值。 例如,可以从函数getAgeGender中为年龄和性别等多个变量分配返回值。

阅读材料
What is Solidity? Our Guide to the Language of Ethereum Smart Contracts
Intro to Solidity 2017 Edition
Ethereum Smart Contracts In Solidity 1 - State, Functions, Modifiers and Events

测试题:

基本数据类型和语句 (Bidder Data & Functions Demos)

学习目标:
1)能够解释基本数据类型和Solidity语言,
2)解释可见性修饰符public的用法,
3)说明功能的基本定义,
4)在构造智能合约时应用基本数据类型和功能。

Remix 环境中进行投标人 Bidder 智能合约设计
包含三个项目;合同名称,数据或状态,函数。

Bidder 合约的第一个版本,一些基础数据。

接下来,添加类图中列出的功能。 我们将实现两个setters ,一个确定竞价资格的设置者。

pragma solidity ^0.4.0; 

contract Bidder {
    
     string public name;
     uint public bidAmount = 20000;
     bool public  eligible;
     uint constant minBid = 1000;
     
     function setName(string nm) public {
         name = nm;
     }
     
     function setBidAmount(uint x) public {
         bidAmount = x;
     }
     
     function determineEligibility() public {
         if (bidAmount >= minBid ) eligible = true;
         else eligible = false;
     }
     
}

编译运行(记得关掉先前运行的智能合约,再 deploy)
setName 设置为 "Amherst",setBidAmount 设置为330000,然后点击Name,显示Amherst,点击bidAmount,显示330000
      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值