编写智能合约(Smart Contract)

创建项目
有别于之前使用truffle init指令来初始化项目,在Truffle推出Boxes功能之后,我们可以直接套用称作react-box的样板,此样板已经整合create-react-app,可以直接用它来开发react web,省下项目设置的时间。
命令:truffle.cmd unbox react-box
或 truffle unbox webpack

开发前的准备

  1. 打开终端,启动testrpc,继续通过testrpc模拟以太坊区块链测试环境。
  2. 创建的代币如果想要能够通过以太币钱包来进行转账和收帐,必须兼容于以太坊的ERC20标准,ERC20定义了支持钱包所必需的合约界面。
  3. 在本篇文章中,我们将安装OpenZeppelin来简化加密钱包开发的过程。OpenZeppelin是一套能够给我们方便提供编写加密合约的函数库,同时里面也提供了兼容ERC20的智能合约。
    npm install zeppelin-solidity

Atom打开项目查看zeppelin-solidity安装结果
通过Atom打开项目,在node_modules中的最后一个文件夹就是zeppelin-solidity的内容。

BloggerCoin.sol代码如下:

pragma solidity ^0.4.4;
//通过import来导入我们需要使用到的StandardToken合约。
import “zeppelin-solidity/contracts/token/StandardToken.sol”;
/*
建立BloggerCoin合约时,让BloggerCoin合约直接继承自StandardToken。is既是继承。
因此BloggerCoin继承了StandardToken所有的状态数据和方法。
当我们继承了StandardToken合约,也就支持了以下ERC20标准中规定的函数。
函数 方法
totalSupply() 代币发行的总量
balanceOf(A) 查询A帐户下的代币数目
transfer(A,x) 发送x个代币到A帐户
transferFrom(A,x) 从A帐户提取x个代币
approve(A,x) 同意A帐户从我的帐户中提取代币
allowance(A,B) 查询B帐户可以从A帐户提取多少代币
/
contract BloggerCoin is StandardToken {
/

这边设定参数的目的是指定这个代币的一些特性。
以人民币为例,人民币的名称(name)是RMB,美元的代号为¥,
拿100元去找零最小可以拿到零钱是一分,也就是0.0001元。
因为1元最小可分割到小数点后4位(0.0001),
因此最小交易单位(decimals)为4。

这里将这个加密代币取名(name)为BloggerCoin(部落币),
代币的代号(symbol)为BLC,
最小分割单位是4(最小可以找0.0001个部落币)。

以下为人民币,比特币,以太币,部落币的对照表供参考:
name symbol decimals
RMB ¥ 4
Bitcoin BTC 8
Ethereum ETH 18
BloggerCoin BLC 4
/
/

另外,当我们把全局变量设为public(公开),
编译时就会自动新增一个读取公开变量的ABI接口,
我们在truffle console中也可以读取这些变量。
/
string public name = “BloggerCoin”;
string public symbol = “BLC”;
uint8 public decimals = 4;
//最后也定义了初始代币数目INITIAL_SUPPLY
uint256 public INITIAL_SUPPLY = 666666;
/

和合约同名的BloggerCoin方法,就是BloggerCoin合约的构造函函数(constructor)。
在构造函数里指定了totalSupply数目,
并将所有的初始代币INITIAL_SUPPLY都指定给msg.sender帐号,
也就是用来部署这个合约的帐号。
totalSupply定义于ERC20Basic.sol中,
balances定义于BasicToken.sol中。
*/
function BloggerCoin() {
// 代币发行的总量
totalSupply = INITIAL_SUPPLY;
balances[msg.sender] = INITIAL_SUPPLY;
}
}

编译、部署、验证
在migrations/目录下建立一个3_deploy_bloggerchain.js文件,内容如下:
现在执行compile与migrate命令
备注:确保testrpc处于运行状态。

编写智能合约(Smart Contract)相关推荐

  1. 智能合约Smart Contract技术详解

    文章目录 合约编写 基本介绍 构造方法 ipfs mint 提现 白名单 合约 前端 部署 验证合约代码 前端和合约交互 准备工作 获取已经mint了的数量 mint 合约编写 建议读者先了解下sol ...

  2. 什么是智能合约(Smart Contract)?

    智能合约是什么? 在区块链上运行的程序,通常称为智能合约(Smart Contract)��.所以通常会把写区块链程序改称写智能合约.虽然比特币(Bitcoin)上也能写智能合约,但是比特币所支持的语 ...

  3. 区块链学习5:智能合约Smart contract原理及发展历程科普知识

    ☞ ░ 前往老猿Python博文目录 ░ 一.智能合约的定义 通俗来说,智能合约就是一种在计算机系统上,当一定条件满足的情况下可被自动执行的合约,智能合约体现为一段代码及其运行环境.例如银行信用卡的自 ...

  4. 如何编写智能合约(Smart Contract)?(II)建立加密代币

    如何编写智能合约(Smart Contract)?(II)建立加密代币 接着上一篇如何编写智能合约(Smart Contract)?,本篇文章,我们将写一个简单的加密代币的智能合约来给大家诠释加密代币 ...

  5. 如何编写智能合约(Smart Contract)(III)最新

    写在前面 参考原文:http://liyuechun.org/2017/09/21/how-to-code-smart-contract-BloggerCoin/有版本问题,按照原文会出错 最新: h ...

  6. 如何编写智能合约之三:使用OpenZepplin函数库开发智能合约

    前面有两节笔记已经说过truffle的相关情况,这里就不再赘述.\ 本笔记是在truffle的基础上,使用OpenZeppelin函数库来创建一个简易发币合约.OpenZeppelin可以简化我们的开 ...

  7. 数字商品指南系列第三篇:编写智能合约并编译部署

    文章目录 前言 警告 完善项目结构 编写合约代码 编译合约 部署合约 总结 捐赠渠道 前言 智能合约为数字藏品提供技术支持,它可以定义数字藏品的简称.全称.发行数量.铸造方法.版权税等等,所有关于数字 ...

  8. 区块链合约协议C语言,Nervos CKB将支持多语言编写智能合约

    作者:Nervos社区投稿 / 来源:Nervos 中文社区 多语言智能合约 " 可以使用多种语言编程和编写智能合约." 我们计划构建多个使用高级语言或 DSL 的框架来促进 CK ...

  9. 迈克尔逊干涉仪仿真程序_如何使用迈克尔逊编程语言在Tezos上编写智能合约

    迈克尔逊干涉仪仿真程序 这是(第1部分):迈克尔逊入门:Tezos的脚本语言 迈克尔逊必须是目前智能合约中最令人兴奋的编程语言之一. 这是一种基于堆栈的严格类型化语言,其中编写了智能合约以确保Tezo ...

最新文章

  1. 内存地址 哪个程序_记一次排查线上程序内存的忽高忽低,又是大集合惹祸了...
  2. deepin安装kde桌面 无法进入_通过远程桌面vnc安装不上,通过远程桌面vnc安装不上无法使用是因为什么?怎么解决...
  3. 2017-07-18日看登录日志,显示十条:最早的是:2014-04-07 17:09,应该就是注册日期吧
  4. @ExceptionHandler
  5. Android解决依赖冲突
  6. EventBus学习
  7. 机器学习入门框架scikit-learn
  8. MacOS的OCR文字识别,节约时间,提高效率
  9. 学了这几招,社交时人人都对你刮目相看
  10. 国军标--Gjb软件需求规格说明书模板
  11. 卡方拟合优度检验(非参)
  12. CreatePipe/CreateProcess
  13. Python运行效率低的原因
  14. 教你制作高逼格的技术分享Keynote(PPT)
  15. 神战奇迹服务器维护,神战奇迹手游官网
  16. “91系列”资源网凉了,500余网站被封杀!
  17. bzoj4453: cys就是要拿英魂!(后缀数组+单调栈+set)
  18. 火狐Firefox最简洁界面设置
  19. 年龄 计算 php,php简单计算年龄的方法(周岁与虚岁)
  20. php无缝滚动文字,JQuery文字无缝滚动效果实现方法

热门文章

  1. 面试题之优惠券超发怎么测试?
  2. 在Ubuntu中搭建tftp服务,使用X210开发板加载系统测试
  3. 检查NC系统中资产负债表不平的套路
  4. 中马传动原董事长吴江因病医治无效去世:年55岁
  5. android 探探卡片,仿探探首页卡片式滑动效果
  6. SDP最佳实践丨详解植物医生首家智能门店
  7. 基于springboot垃圾分类管理系统
  8. 物联网竞赛网络链路系统问题总结
  9. Android 反序列化漏洞攻防史话
  10. php循环语句w,php语言的几种循环语句的使用格式,及其区别