声明
本文内容首发于微信公众号:
在路上正青春(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;
}
}
二 知识点回顾
如上图代码,主要的知识点不再罗列;这里以第一课的学习过的智能合约的知识点作一些说明:
在以太坊智能合约当中,执行代码会消耗一种叫Gas的东西,这个Gas是有价格的,因此也就是说执行以太坊智能合约是需要花钱的。钱的单位最小是wei,1wei = 1;
constant 关键字的作用。constant修饰变量时,该变量作为一个常量存在,所对应的变量不会再被改变。
当要在以太坊函数中执行涉及到支付的方法时,要注意把方法添加payable关键字才能执行成功。
关于异常的处理,原来是使用throw关键字将异常抛出,现在使用revert()来结束执行。区别在于throw抛出异常时会把剩下的gas全部消耗完毕,revert()方法抛出异常时会把未用完的gas返回给用户。
关于address,时间单位,价值单位的概念及描述和区别。
关于消息msg的概念,和一些方法的使用要特别注意。
this的使用,第一课问答课上老师回答说后面还会再继续讲,静静等待把。
暂时想到这些以上的知识点。
三 计划
这就算是正式开始智能合约技术层面的学习了,学完solidity后能做出个部署到以太坊的应用吧。然后后面才能更深入进去的可能,为后面打基础。
微信扫一扫
关注该公众号