使用solidity编程语言编写智能合约



前言

随着区块链技术的不断发展,区块链被越来越多运用到生活中,什么是区块链智能合约嘞?简单说下,智能合约,就是一段写在区块链上的代码,一旦某个事件触发合约中的条款,代码即自动执行。也就是说,满足条件就执行,不需要人为操控。智能合约是区块链上的一段程序,没有智能合约,区块链还是区块链。比较扯的是很多链为了让自己有智能合约,于是移植了兼容以太坊的智能合约功能。而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语言来部署合约,我感到一种想要了解区块链智能合约的迫切感。初探智能合约世界,感到自己所拥有知识的不足,各种编程语言皆有所通,骚年,认真学习吧,哈哈
  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值