智能合约编程语言 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

智能合约和java后端的关系 智能合约的编程语言_智能合约和java后端的关系


开始编写合约,有关僵尸工厂合约如下:

代码如下(示例):

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编译器版本。

智能合约和java后端的关系 智能合约的编程语言_以太坊_02


点击开始编译(Ctrl+s)进行编译,编译成功之后,在下方会出现绿色的合约名字,即一下界面

智能合约和java后端的关系 智能合约的编程语言_以太坊_03


这就表示智能合约成功编译。

3.部署合约

在智能合约成功编译,之后我们就需要将智能合约部署到区块链上面,因为我们在这里是进行学习测试,因此我们在测试网络上面部署合约。在节点环境选择JS虚拟机。选择之后,他就会给你提供测试网络上面的地址,里面有100ETH的gas费用,足够智能合约部署和使用的gas消费。

智能合约和java后端的关系 智能合约的编程语言_智能合约_04


选择好节点环境之后,接下来正式进入部署环节,总共有两种部署方式,我们是编写智能合约进行部署,因此我们之间点击部署按钮就行,下方那个输入合约地址进行部署,现在暂时用不到。

智能合约和java后端的关系 智能合约的编程语言_智能合约和java后端的关系_05


成功部署之后,在下方就会显示部署成功的合约名字。

智能合约和java后端的关系 智能合约的编程语言_区块链_06


在这个ZombieFactory智能合约之中,有一个public方法和一个数组zombies。

可以调用createRandomZombie方法创建自己的Zombie。

注意因为在区块链网络上面进行合约的部署,和调用都需要你花费gas进行使用,就相当于你开高速需要油费一样。

智能合约和java后端的关系 智能合约的编程语言_编程语言_07


因此进行一系列的部署和调用之后,该账户的ETH余额会减少。

总结

第一次solidity语言来部署合约,我感到一种想要了解区块链智能合约的迫切感。初探智能合约世界,感到自己所拥有知识的不足,各种编程语言皆有所通,骚年,认真学习吧,哈哈