cover_image

编程|Solidity编程入门

斜杠 大卫能说慧道 2017年11月06日 15:32

声明

本文内容首发于微信公众号:

在路上正青春(xieganglive

文/斜杠

本文内容转载至朋友圈和消息,无需特别申请版权许可


周末手不小心摔伤了,敲字不方便,逢7倍数的作业只好提到今天来写。


从11月开始学习Solidity语言了,希望能入门。


零 前提

Solidity语言是一门用来编写智能合约的高级语言,同时是一门静态语言,也就是使用前必须进行明确的声明。Solidity语言编写的代码编译以后生成以太坊虚拟机代码,然后运行在EVM(以太坊虚拟机)上面。具体的文档地址如下:

http://wiki.jikexueyuan.com/project/solidity-zh/introduction.html。


一 合约声明

pragma solidity ^0.4.14;


contract Payroll{

    uint mSalary = 1 * 1 ether;

    address mFrank;

    uint constant mPayDuration = 30 days;

    uint mLastPay = now;


    function payFund() payable returns (uint){

            return mSalary;

    }

   

    function getPaid(){

        if(msg.sender != mFrank){

            revert();          

        }

        uint nowPay = mPayDuration + mLastPay;

        if(nowPay < now){

            mFrank.transfer(mSalary);

            mLastPay = nowPay;

        }

    }

    

    function isEnoughFund() returns (bool){

        return mSalary > 0;

    }

}


二 知识点回顾

如上图代码,主要的知识点不再罗列;这里以第一课的学习过的智能合约的知识点作一些说明:

  1. 在以太坊智能合约当中,执行代码会消耗一种叫Gas的东西,这个Gas是有价格的,因此也就是说执行以太坊智能合约是需要花钱的。钱的单位最小是wei,1wei  = 1;

  2. constant 关键字的作用。constant修饰变量时,该变量作为一个常量存在,所对应的变量不会再被改变。

  3. 当要在以太坊函数中执行涉及到支付的方法时,要注意把方法添加payable关键字才能执行成功。

  4. 关于异常的处理,原来是使用throw关键字将异常抛出,现在使用revert()来结束执行。区别在于throw抛出异常时会把剩下的gas全部消耗完毕,revert()方法抛出异常时会把未用完的gas返回给用户。

  5. 关于address,时间单位,价值单位的概念及描述和区别。

  6. 关于消息msg的概念,和一些方法的使用要特别注意。

  7. this的使用,第一课问答课上老师回答说后面还会再继续讲,静静等待把。


暂时想到这些以上的知识点。


三 计划

这就算是正式开始智能合约技术层面的学习了,学完solidity后能做出个部署到以太坊的应用吧。然后后面才能更深入进去的可能,为后面打基础。


图片


微信扫一扫
关注该公众号

继续滑动看下一个
大卫能说慧道
向上滑动看下一个