基于React+truffle的完整智能合约构建

2018-02-22 11:17:42

内容:使用solidity的truffle框架开发智能合约,前端使用react框架,最终完成智能合约从前端到后端,从开发到部署的完整流程。 1、truffle安装 在nodejs安装完成的环境下,全局安装truffle:cnpm i -g truffle。 Truffle Boxes是truffle框架集成的脚手架工具,可以使用这个脚手架快捷的生成完备的DAPP的项目结构,其中集成了前端视图、编译压缩工具等。可以在http://truffleframework.com/boxes/中查看并选择合适的模板来进行项目初始化。 2、项目初始化 这里我在http://truffleframework.com/boxes/上选择react模板来开发DAPP,直接在终端执行truffle unbox React即可完成项目的初始化,期间需要安装nodejs依赖,耐心等待即可(都没个安装进度提示,差评!)。 ludis@MacBook -> ~/Desktop/golang -> mkdir truffle && cd

solidity函数类型及truffle使用

2018-02-07 03:31:38

1、solidity类的多继承、重写 solidity类具有多继承的特性: pragma solidity ^0.4.19 contract Animal1 { uint age; } contract Animal2 { string weight; } contract Dog is Animal1, Animal2 { /** Dog 会继承 Animal1 及 Animal2 两个类 */ } 重写与其他语言相通,即子类的同名函数会覆盖从父类继承的方法: pragma solidity ^ 0.4 .19; contract Animal { function testFunc() public pure returns(string) { return "Animal testFunc"; } } /** 子类重写了从父类继承过来的方法,会以子类的方法为基准 */ contract Dog

区块链学习 - solidity合约部署

2018-02-06 03:07:05

区块链原理 通过https://anders.com/blockchain/hash.html可以直观的了解hash、block(区块)、blockchain(区块链)、distributed(分布)、tokens(代币)各个概念。 开发环境配置 1、 MetaMask钱包 1.MetaMask是什么? MetaMask是一款在谷歌浏览器Chrome上使用的插件类型的以太坊钱包,该钱包不需要下载,只需要在谷歌浏览器添加对应的扩展程序即可,非常轻量级,使用起来也非常方便。 2.MetaMask安装 chrome浏览器安装MetaMask,直接用MetaMask创建钱包或者通过myetherwallet.com创建钱包,然后用MetaMask导入钱包私钥即可。 开发测试时,最好新建一个测试钱包,万一自己的币搞没就裂了~~ 3.MetaMask常用功能 如上图所示,第一个为正式网络,也就是ETH的公链,真实的币就存在公链上。后两个是两个测试网络,点击后便会切换到测试网络,钱包的地址也会随之改变。为了测试方便,在测试网络的钱包中免费获取一些测试用的代币。 4.测试代币获取 在Ropsten Test

Golang channel进阶

2018-02-01 04:16:18

将向管道中写入数据的称为“生产者”,从管道中读取数据的称为“消费者”。 1、生产者与消费者关系 在上篇文章中,生产者与消费者是1:1及n:1的关系,那么能不能实现1:n的关系嘞?即一个生产者向管道添加数据,多个消费者从管道读取?示例如下: 1:2案例: package main import ( "fmt" ) // 生产者 对 消费者 :1 -> 2 func main() { c := make(chan int) done := make(chan bool) // 生产者:大黄 go func() { for i := 0; i < 100; i++ { fmt.

Golang channel

2018-01-30 05:15:53

1、什么是 channel(管道/通道)? 在 golang 中,channel 是多个 goroutine (线程) 之间传递和同步数据的一种手段。同一时刻,仅有一个线程可以向 channel 发送数据,同样的,同一时刻也只能有一个线程能从 channel 读取数据。 channel 的特性使得它可以解决并发编程可能造成的死锁问题,同时也是 Mutex (上锁)及 sync 多线程编程的替代方案,可以简化代码结构。 2、channel 的声明方式 var c chan int // var 关键字声明,缓冲int类型数据 var c chan string // 缓冲string类型数据 c := make(chan int) // make关键字声明,

Golang指针

2018-01-27 03:45:01

golang中的指针与c语言指针略有不同。 1、基本类型的指针 var num int = 10 var p *int = &num // 指针的类型为所指向的变量的类型前加* 2、数组的指针与指针数组 数组的指针: arr := [3]int{1, 2, 3} var arrp *[3]int // 数组的指针 a := &arr // 直接取数组变量的地址赋值会报错(arrp = &arr) arrp = a // 通过第三个变量传递 指针数组: arr := [3]*int{} numArr := [3]int{1, 2, 3} for i, v

Golang并发编程、串行编程

2018-01-26 04:54:25

线程概要 1、什么是进程,线程,多线程? 开个QQ,开了一个进程;开了迅雷,开了一个进程。 在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。 所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ的运行,那么这“多个工作”分别有一个线程。 所以一个进程管着多个线程。 通俗的讲:“进程是爹妈,管着众多的线程儿子”... 作者:南理汉子 链接:https://www.zhihu.com/question/25532384/answer/131906596 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 进程: 一个正在运行的程序一般就是一个进程,一个进程中可以有多个线程 线程:一条有序的CPU命令的集合体 多线程:多条有序CPU命令的集合体 备注:一个CPU在同一时刻只能执行一个CPU命令

Golang数组、map、函数及类

2018-01-23 05:13:49

数组/切片 数组声明: 普通声明: var arr = [5]int{} // 长度固定为5,不可扩展,{}中为初始值,默认为0 arr := [5]string{"a", "b", "c", "d"} var arr [5]int // [0, 0, 0, 0] make关键字声明数组切片: var arr = make([], 2, 4) // 长度 len(arr) 为2,容量 cap(arr) 为4,长度决定存储量,容量不够时翻倍 arr := make([], 1, 1) arr = append(arr,

区块链学习-进制、GO运算符

2018-01-12 04:02:55

int 与 uint 区别 int 表示有符号整数 uint 表示无符号整数 int8 -128~127 int16 -2^8~2^8 ... uint8 0~255 uint16 0~2^16 ... 十进制转二进制 1. 正整数转二进制 正整数使用二除法,得到的结果倒叙即为该十位数的二进制数 2. 负数转二进制 先得到正数对应的二进制数,然后取反,再加一即为该负数的二进制数 3. 小数转二进制 整数部分+小数点+小数部分 整数部分:按照前面的步骤正常转换 小数部分:小数部分乘2,得到结果的整数部分n,若小数部分不为零,继续上面的步骤。最后得到的n的排列即为小数部分 二进制转十进制 1. 正二进制数 正二进制即首位为0的二进制数,

区块链学习 - Golang初始

2018-01-11 03:01:09

系统:Ubuntu 16.0.4 安装 下载:https://golang.org/dl/ 下载linux对应的版本 解压:将源码解压至/usr/local tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 配置环境变量:export PATH=$PATH:/usr/local/go/bin 检测安装:go version go env HelloBlockChain cd $HOME mkdir golang && cd golang vi index.