编写智能合约(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. 【内核】嵌入式linux内核的五个子系统
  2. AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss代码调试过程
  3. Yum编译安装Error Downloading Packages报错
  4. 跨链Cosmos(5)ABCI 接口
  5. java中DWR的使用
  6. NSString的各种用法总结(创建、截取、判断比较、转化数据类型、拼接、替换、添加、追加、读取、写入、删去、改变)
  7. 使用Spring Boot和DJL进行深度学习
  8. 【渝粤教育】国家开放大学2018年秋季 3950T金融基础 参考试题
  9. eclipse中简单实现自己的工具类打包成jar包并在项目中使用
  10. shell 编程-Expect
  11. Spring MVC之基于java config无xml配置的web应用构建
  12. python点击屏幕_Python屏幕操作
  13. python_numpy_求L1损失的两种方法
  14. 软约束、硬约束、Minimum Snap的轨迹优化方法
  15. 【科目一】你必须知道的驾考交通标志大全
  16. 7-1 宿舍谁最高?
  17. 超市收银系统c语言,C语言超市收银系统.docx
  18. 计算机vb考试程序试题,2017计算机二级VB考试题及答案
  19. Python3 完成 QUOTED-PRINTABLE 编码及反翻译
  20. CAD进入选择状态前后对话框隐藏与显示(对话框发消息)

热门文章

  1. Ubuntu如何 安装解压缩软件winRAR?
  2. 华为Eudemon系列防火墙典型配置!
  3. 合规要点解析:如何正确的使用隐私增强技术
  4. 奋斗的一生(谨以此文献给自己和所有正在奋斗的人!)
  5. 面向Java开发者的ChatGPT提示词工程(5)
  6. 使用curl进行网站测速
  7. ocr文字识别 php源码,OCR文字识别
  8. Java 百度、高德、84坐标系经纬度的相互转换
  9. 第五十七篇:VS2015建立一个完整的c++工程:头文件.h 源文件.cpp,自动生成类
  10. 机器学习知识总结 —— 14. 什么是支持向量机(基础概念、梯度下降、软间隔、硬间隔)?