智能合约编程语言 solidity语言
- 前言
- 一、solidity语言是什么?
- 二、一个简单的solidity智能合约
- 1.编写智能合约
- 2.编译合约
- 3.部署合约
- 总结
文章目录
- 前言
- 一、solidity语言是什么?
- 二、一个简单的solidity智能合约
- 1.编写智能合约
- 2.编译合约
- 3.部署合约
- 总结
前言
随着区块链技术的不断发展,区块链被越来越多运用到生活中,什么是区块链智能合约嘞?简单说下,智能合约,就是一段写在区块链上的代码,一旦某个事件触发合约中的条款,代码即自动执行。也就是说,满足条件就执行,不需要人为操控。智能合约是区块链上的一段程序,没有智能合约,区块链还是区块链。比较扯的是很多链为了让自己有智能合约,于是移植了兼容以太坊的智能合约功能。而solidity语言的闻名,正是因为使用solidity语言编写的以太坊智能合约的成功,以太坊的巨大成功,使得solidity语言一夜成名。
一、solidity语言是什么?
Solidity是一种智能合约高级语言,运行在Ethereum虚拟机(EVM)之上。Solidity是面向智能合约的编程语言。也即Solidity发明出来的目的就是为了实现智能合约。但是请注意,智能合约的实现手段不止是Solidity,其他的语言比如Go, JS等同样可以用来实现智能合约。只不过Solidity专门用来做这件事情,是不是就比其他的语言更好用,需要慢慢发现。使用solidity语言来进行智能合约的编程。
以下介绍几个有关solidity编程智能合约的网站。
1.在线编译运行智能合约网站 Remix。点击打开Remix网址 2.简单学习区块链智能合约网站 cryptozombies。 点击打开cryptozombies
二、一个简单的solidity智能合约
1.编写智能合约
我们首先打开在线智能合约网站Remix。
创建一个新sol文件,如图命名为ZombieFactory.sol
开始编写合约,有关僵尸工厂合约如下:
代码如下(示例):
pragma solidity ^0.4.19;
contract ZombieFactory {
event NewZombie(uint zombieId, string name, uint dna);
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
Zombie[] public zombies;
function _createZombie(string _name, uint _dna) private {
uint id = zombies.push(Zombie(_name, _dna)) - 1;
NewZombie(id, _name, _dna);
}
function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
return rand % dnaModulus;
}
function createRandomZombie(string _name) public {
uint randDna = _generateRandomDna(_name);
_createZombie(_name, randDna);
}
}
2.编译合约
注意编译合约,应该选择符合智能合约编写版本的版本要求,这里我们选择0.4.19+commit.c4cbbb05.Emscripten.clang编译器版本。
点击开始编译(Ctrl+s)进行编译,编译成功之后,在下方会出现绿色的合约名字,即一下界面
这就表示智能合约成功编译。
3.部署合约
在智能合约成功编译,之后我们就需要将智能合约部署到区块链上面,因为我们在这里是进行学习测试,因此我们在测试网络上面部署合约。在节点环境选择JS虚拟机。选择之后,他就会给你提供测试网络上面的地址,里面有100ETH的gas费用,足够智能合约部署和使用的gas消费。
选择好节点环境之后,接下来正式进入部署环节,总共有两种部署方式,我们是编写智能合约进行部署,因此我们之间点击部署按钮就行,下方那个输入合约地址进行部署,现在暂时用不到。
成功部署之后,在下方就会显示部署成功的合约名字。
在这个ZombieFactory智能合约之中,有一个public方法和一个数组zombies。
可以调用createRandomZombie方法创建自己的Zombie。
注意因为在区块链网络上面进行合约的部署,和调用都需要你花费gas进行使用,就相当于你开高速需要油费一样。
因此进行一系列的部署和调用之后,该账户的ETH余额会减少。
总结
第一次solidity语言来部署合约,我感到一种想要了解区块链智能合约的迫切感。初探智能合约世界,感到自己所拥有知识的不足,各种编程语言皆有所通,骚年,认真学习吧,哈哈