搭建ETH私链并创建ERC20 Token

2018-03-12 21:09:34

1、下载ETH钱包 下载 Ethereum Wallet或Mist其一即可,二者功能相同。 2、安装geth Mac下使用: brew install geth 其余平台参考安装方法 3、编辑创世区块配置文件 genesis.json:(参考示例) ludis@MacBook ~ cd Desktop/ethereum ludis@MacBook ~/Desktop/ethereum cat > genesis.json { "config": { "chainId": 33, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0

DAPP结合IPFS — 去中心化图床

2018-03-06 21:31:35

内容:打造一款去中心化图床,用户可上传图片至IPFS上,文件hash保存在以太坊的区块上,以此实现永存的去中心化图床。 技术栈:依旧使用truffle框架快速构建项目truffle unbox react 1、什么是 IPFS 星际文件系统IPFS(InterPlanetary File System)是一个面向全球的、点对点的分布式版本文件系统,目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。 直白了说,就是类似BT下载的p2p文件存储、传输系统。 2、安装 IPFS IPFS官网下载对应系统的安装包(需要翻墙) 以Mac为例,终端执行: cd /Users/ludis/Downloads tar xvfz go-ipfs_v0.4.

一个完整的智能合约—区块链上永存的留言

2018-03-04 23:12:04

目标: 基于以太坊开发一个完整的DAPP应用,实现留言及随机展示留言功能。 技术栈:使用solidity语言的truffle框架,项目模板使用react,前端使用ES6语法。 项目线上地址: http://words.ldsun.com/ 项目代码:https://github.com/flute/blockChainWords 总结: 本次从零开发发哦部署上线约耗时六小时,前期在solidity合约开发上费时较多,主要是对其语言特性不了解,后续在react的动画上有些费时,源于对动画的生疏及类库的选择。 整个的开发流程比较清晰: 编写、调试合约 编写react前端页面、与合约交互的逻辑、显示逻辑、动画等 部署合约,与前端联调 编译项目,上传代码,配置nginx解析。 补充: 整个项目的的实现比较简单,这里不做具体分析,可以git查看,同时参考前几篇文章即可。这里贴一下solidity合约开发中开始的一些“美(错)好(误)想(代)法(码)

基于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"; } } /** 子类重写了从父类继承过来的方法,会以子类的方法为基准

区块链学习 - 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;

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命令