基于以太坊的智能合约solidity学习日记
Posted chelseaz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于以太坊的智能合约solidity学习日记相关的知识,希望对你有一定的参考价值。
基于以太坊的智能合约solidity学习日记
第1课 helloworld在remix之中的实现
pragma solidity ^0.4.16;//版本号最好设置成0.4.16之后的版本,之前的版本在一些问题上面会报错
contract HelloWorld
string Myname = "chelsea";
function getName() public returns(string)
return Myname;
function changeName(string _newName)public
Myname = _newName;
function pureTest(string _name) pure public returns(string)
return _name;
第2课 主要是一些布尔语句 。
pragma solidity ^0.4.16;
contract booleanTest
bool _a;
int num1=100;
int num2=100;
function getBool() returns(bool)
return _a;
function getBool1() returns(bool)
return !_a;
function panduan() returns(bool)
return num1==num2;
function panduan2() returns(bool)
return num1!=num2;
function yu() returns(bool)
return (num1==num2)&&true;
第24课-第31课 地址与交易篇
1.以太坊地址的本质(p24)
pragma solidity ^0.4.16;
contract addresstest
address public account;//初始时默认地址为0,外部地址为0xca35b7d915458ef540ade6068dfe2f44e8fa733c(40个字节160位)等价于 unit160,账户地址代表拥有账户
点击部署,部署完成之后合约也会有一个地址,这个地址0xe90f4f8aeba3ade774cac94245792085a451bc8e部署在区块链的网络之上
然后对是否是160位进行了一个验证,这个部分报了一个错误还没具体去调整(作用是unit160和address进行强制转换)
pragma solidity ^0.4.16;
contract addresstest
address public account;//0xca35b7d915458ef540ade6068dfe2f44e8fa733c
function changeIt() returns(unit160)//报的错误是6:33.declarationError
return unit160(account);
接着讲解地址怎样去进行判断,判断大小,判断依据是地址的数字大小
pragma solidity ^0.4.16;
contract addresstest
address public account=0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
address account1=0xca35b7d915458ef540ade6068dfe2f44e8fa733c;
address account2=0x0de37dce8154ce54d895bd16942c86d568ddb5fc;
function changeIt() view returns(address)
return address(0xe90f4f8aeba3ade774cac94245792085a451bc8e);
function check1() view returns(bool)//加上view之后能够更加直观的在右方看到结果
return account1>account2;
function check2() view returns(bool)
return account1>=account2;
function check3() view returns(bool)
return account1<account2;
function check4() view returns(bool)
return account1<=account2;
2.使用钱包转移资金(p25)
合约有地址,那么在这个地址上依旧可以存储以太币,如何调用地址时给合约用户发送以太币,调用函数的时候连带着将value也就是交易金额发送给合约的地址
调用函数的同时,发送value信息,发送以太币给账户的地址,点击pay按钮之后,会连带着将图中所示的10ether发送给智能合约的地址
基于以太坊的智能合约开发教程 Solidity 全局变量
基于以太坊的智能合约开发教程 Solidity 全局变量
全局变量
block.blockhash(uint blockNumber) neturns (bytes32):返回给定区块号的哈希值,只支持最近256个区块,且不包含当前区块。在版本0.4.22中奔用并被替换为。bLockhash(uint bLockNumben)
block.coinbase (address):当前块矿工的地址。
block.difficulty (uint):当前块的难度。
block.gaslimit (uint)当前块的gaslimit。block.number (uint):当前区块的块号。
block.timestamp (uint):当前块的unix时间戳(从1970/1/1 00:00:ee UTC开始所经过的秒数)msg.data (bytes):完整的调用数据(ca11data)
msg.gas (uint):当前还剩的gas。版本0.4.21中弃用并将被替换为gasleft()msg.sender (address):当前调用发起人的地址。
msg.sig (bytes4):调用数据(calldata)的前四个字节(例如为:函数标识符)。msg.value (uint):这个消息所附带的以太币,单位为wei。
now (uint):当前块的时间戳(b1ock.timestamp的别名)tx.gasprice (uint):交易的gas价格。
tx.origin (address):交易的发送者(全调用链)
下面是调用的部分代码,可以参考
pragma solidity ^0.4.19;
contract globalvariable{
uint timestam = now;
function test1()view public returns(uint){
return block.difficulty;
}
function test2()view public returns(address){
return msg.sender;
}
function test3()view public returns(uint){
return block.number;
}
function test4()view public returns(uint){
return block.timestamp;
}
function test5()view public returns(uint){
return timestam;
}
function test6()view public returns(address){
return block.coinbase;
}
}
以上是关于基于以太坊的智能合约solidity学习日记的主要内容,如果未能解决你的问题,请参考以下文章
基于以太坊的智能合约开发教程Solidity mapping在结构体当中的使用