Step 1: 创建一个基础合约 pragma solidity ^0.4.7; contract Coin { address public minter; mapping (address => uint) public balances; } 这里我们定义了一个address 作为key, uint做为value的hashTable balances; 我们还定义了一个address的变量minter; Step 2: 添加一个构造函数Coin() function Coin() { mi…
前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还不了解,建议你先看以太坊是什么 众筹 先简单说下众筹的概念:一般是这样的,我一个非常好的想法,但是我没有钱来做这事,于是我把这个想法发给大家看,说:我做这件事需要5百万,大家有没有兴趣投些钱,如果大家在30天内投够了5百万我就开始做,到时大家都是原始股东,如果募资额不到5百万,大家投的钱就还给大家.…
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数.你也发现了,本框架模拟的是truffle框架,但是完全是基于go语言编写,而且以太坊的客户端需要使用私链或者测试链. 可以学到什么? go语言访问以太坊 使用solc编译器编译合约 自动化部署合约 abi文件解读 go语言与智能合约调用 golang模版编程 golang处理toml配置文件 sh…
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.Address 6.更多数据类型介绍 7.相关文章 目录 Solidity 是一种静态语言类型,在编译前都要指定每个变量的类型.Solidity 提供了几种基本类型,通过几种基本类型的组合,可以组合成复杂类型. 网络上有很多翻译后的关于 Solidity 类型介绍的文章,这里就不多介绍,只是着重介绍后…
传送门: 柏链项目学院 使用web3.js监听以太坊智能合约event   当我们在前端页面调用合约时发现有些数据不会立即返回,这时还需要再调用更新数据的函数.那么这样的方法使用起来非常不便,监听event就可以很好的解决这样的问题,下面我们来看看如何监听event.以下内容基于web3.js1.0版本,版本不同可能会代码差异. 1. 修改geth启动参数 全部参数如下 geth --datadir ./data --networkid 15 --port 30303 --rpc --rpcad…
以太坊智能合约介绍,Solidity介绍 一个简单的智能合约 先从一个非常基础的例子开始,不用担心你现在还一点都不了解,我们将逐步了解到更多的细节. Storage contract SimpleStorage { uint storedData; function set(uint x) { storedData = x; } function get() constant returns (uint retVal) { return storedData; } } 在Solidity中,一个…
简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用,首先需要安装其客户端,本文使用基于Go语言的Geth, 其官网为https://github.com/ethereum/go-ethereum. 第一步 在命令行环境中输入以下命令, 连接到以太坊测试网络 geth --testnet --fast --cache=512 console 第…
开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI? 数字猫合约 ABI ABI(Application Binary Interface) 如果理解 API 就很容易了解 ABI.简单来说,API 是程序与程序间互动的接口.这个接口包含程序提供外界存取所需的 functions.variables 等.ABI 也是程序间互动的接口,但程序是被编译…
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了从智能合约到go语言的自动编译,同时也可以自动提取到ABI信息. 具体可以参考: 第一课 go语言与智能合约调用的来龙去脉 第二课 智能合约自动化编译 本节主要工作 go语言模版编程 目标代码生成 目标代码的调用代码生成 配置文件的自动化生成 原有代码优化 想要自动化生成测试代码,首先你要知道目标代…
rpc接口调用以太坊智能合约 传送门: 柏链项目学院   在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将向大家分享. rpc接口调用智能合约 先来编写一个简单的智能合约 contract Multiply7 { event Print(uint); function multiply(uint input) returns (uint) { Print(input * 7); return input…
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实现上,它通过RPC 调用与本地节点通信.web3.js可以与任何暴露了RPC接口的以太坊节点连接. web3中有eth对象 - web3.eth 具体来表示与以太坊区块链之间的交互.shh对象 - web3.shh表示Whisper协议的相关交互.后续我们会继续介绍其它一些web3协议中的对象.可用…
以太坊被称为区块链2.0,就是因为以太坊在应用层提供了虚拟机,使得开发者可以基于它自定义逻辑,通常被称为智能合约,合约中的公共接口可以作为区块链中的普通交易执行.本文就智能合约发代币流程作一完整介绍(当然智能合约不局限于发代币).内容如下: Solidity ERC20 合约编写与发布 合约源码上传 其它 Solidity Solidity是用于在以太坊编写智能合约的语言,目前最新版本0.5.11.这里对几个关键概念作一介绍. library library常用于提供可复用方法,可以随合约[作为…
传送门: 柏链项目学院 第二课 智能合约自动化编译 前期内容回顾 之前我们的介绍的是如何通过solc编译智能合约,并且调用智能合约,本节我们继续实践,将智能合约的代码自动化编译以及abi文件生成搞定. 我们需要掌握什么技能呢? go语言调用命令行 toml配置文件处理 awk工具的使用 go调用命令行 go调用命令行,我们使用exec包 LookPath 可以判断一个可执行程序是否存在 Command 创建一个命令行 cmd.Run() 运行命令行,也可以使用Start()模式,可以去接收管道信…
  Remix 是一個开源的 Solidity 智能合约开发环境,提供基本的编译.部署至本地或测试网络.执行合约等功能.Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约. 本文希望将一个很简单的代币合约(只能发行和转账),部署在本地和测试网络上,测试下它的功能. 详细描述使用 Remix 的步骤及使用上可能碰到的问题. 之前开发过以太坊Ethereum智能合约,但没有记录过开发的过程和碰到的问题,觉得挺可惜.这次重新开始,从最基础开始,一步步学习. 开…
以太坊 EVM原理与实现 以太坊底层通过EVM模块支持合约的执行与调用,调用时根据合约地址获取到代码,生成环境后载入到EVM中运行.通常智能合约的开发流程是用solidlity编写逻辑代码,再通过编译器编译元数据,最后再发布到以太坊上. 代码结构 . ├── analysis.go //跳转目标判定 ├── common.go ├── contract.go //合约数据结构 ├── contracts.go //预编译好的合约 ├── errors.go ├── evm.go //执行器 对外…
原文地址:石匠的blog truffle是一个基于Javascript开发的一套智能合约开发框架,使用Solidity语言编写合约.truffle有一套自动的项目构建机制,集成了开发,测试和部署的各个流程细节,不用开发人员关注.truffle使用说明. testrpc是基于pyethereum,可以快速的搭建一个模拟以太坊的测试网络,并且预制了若干存有代币的账号,可以直接使用.不像geth是一个真正的以太网网络,testrpc在内存中模拟了以太坊网络,运行速度非常快,很适合做智能合约的开发和测试…
一.概述 ETH 网络这里就不介绍了,这篇文章主要记录在以太坊主网和测试网络部署一个智能合约,也就是如何发币. 二.部署合约需要的生产工具      准备工具前,建议大家准备个VPN,因为会访问国外网站. 我这里是在 myxgj.com 网站买的代理. 1.钱包.钱包使用谷歌Chrome浏览器插件MetaMask . 如何装插件,如何注册账号,不详细写了.网络上很多介绍,大家可以搜索. 2.获取token.这里需要区分测试网络和主网token.测试网络我使用Rinkeby测试网络,如何获取Rin…
Truffle是以太坊(Ethereum)智能合约开发的瑞士军刀,小巧好用,上手简单. 本篇文章主要展示如何用Truffle 开发第一个Ethereum智能合约. 1.准备工作:(本人针对window环境,如果是mac 或linux可以自行搜索其他教程) a.安装git bash :http://gitforwindows.org/ b.安装npm:https://jingyan.baidu.com/article/a17d528506d7f58098c8f2b0.html 2.安装Truffl…
前言 部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果. 虽然现在IDE中已经存在了Solidity插件,可以编写智能合约,但是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试. 如果团队管理的区块节点多.合约多,那得哭晕在厕所. Truffle是一个世界级的智能合约开发框架,专门为智能合约而生. 安装 安装truffle sudo cnpm install -g truffle 查看版本 truffl…
一.环境安装: 1.安装web3工程:npm install web3 2.安装solc工程:npm install solc二.在node环境中使用 先引用所需环境: var fs = require ('fs');var solc = require ('solc');var solc = require ('web3'); //注:eth_token.sol 是在node工程中已经写好的要发布的智能合约. //加载需要发的智能合约,我这里用ERC20标准合约测试.代码看之前的博客var s…
在小狐狸钱包(MetaMask)日常使用中,有一个细节可能很少人注意到,就是无论你登入什么网站,或者需要跟任何项目签订智能合约都要授权的步骤,这其中就会给黑客留下很多空子,特别是将一个Token用智能合约托管给项目方的时候,这时项目方是拥有操作你账户中该Token权限的权力的,那么怎么才能取消跟他们订立的合约呢? 可以访问该网站,https://revoke.cash/ 然后连接上自己的钱包,就会读取钱包中已经订立了合约的Token项,然后点撤销(Revoke)即可. 如下图:分别说下1,2,3…
1. pragma solidity >=0.4.22 <0.6.0;//版本号,头文件 contract BooleanTest { bool _a;//默认返回false int num1=100; int num2=200; function getBool() public view returns (bool) { return _a; } function getBool2() public view returns (bool) { return !_a;//去反 } funct…
部署并运行 Java 链代码示例 您已经定义并启动了本地区块链网络,而且已构建 Java shim 客户端 JAR 并安装到本地 Maven 存储库中,现在已准备好在之前下载的 Hyperledger Fabric 附带的一个 Java 链代码示例上构建.注册和调用交易. 部署并运行链代码 您将执行以下步骤: 使用 Gradle 构建示例. 通过运行 Gradle 构建软件为您创建的脚本,向验证对等网络注册该示例. 使用 SoapUI 将示例部署到本地区块链网络. 使用 SoapUI 在示例链代…
编写第一个 Java 链代码程序 在上一节中,您已经熟悉了如何构建.运行.部署和调用链代码,但尚未编写任何 Java 代码. 在本节中,将会使用 Eclipse IDE.一个用于 Eclipse 的 Gradle 插件,以及一个名为 ChaincodeTutorial 的 Java 链代码框架项目,编写第一个 Java 链代码程序.您将从我为此教程创建的 GitHub 存储库中获取框架代码,将该代码导入 Eclipse 中,添加代码来让链代码智慧合同按要求生效,然后在 Eclipse IDE 内…
pragma solidity ^0.4.0; // priveta public internal contract Test{ //defualt internal uint8 internal _money; uint8 _age; uint8 private _height; uint8 public _sex; function test() constant returns(uint8){ return _money; } function testAge() constant re…
pragma solidity ^0.4.0; contract Test{ /* 属性的访问权限 priveta public internal defualt internal interlnal,private cannot be accessed from outside */ uint8 internal _money; uint8 _age; uint8 private _height; uint8 public _sex; /*uint8 public _sex == functi…
1. 安装“eth”命令行工具 sudo add-apt-repository ppa:ethereum/ethereum-qt sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update sudo apt-get install cpp-ethereum 2. 安装Mix IDE(可选) sudo apt-get install mix-ide mix-ide 原文地址:http://www.mamicode.com/in…
智能合约开发用solidity编程语言部署在以太坊这个区块链平台,本文提供一个官方实战示例快速入门,用例子深入浅出智能合约开发,体会以太坊构建去中心化可信交易技术魅力.智能合约其实是"执行合约条款的计算机交易协议".区块链上的所有用户都可以看到基于区块链的智能合约. 维基上说智能合约(英语:Smart contract )是一种旨在以信息化方式传播.验证或执行合同的计算机协议.智能合约允许在没有第三方的情况下进行可信交易.这些交易可追踪且不可逆转.智能合约概念于1994年由Nick S…
以太坊ETH中智能合约消耗的Gas.Gas Limit是什么? 数字货币交易一般是有交易费的,比特币(BTC)的交易费很容易理解,就是直接支付一定额度的BTC作为手续费.而以太坊(ETH)的交易费表面上看也是如此,需要支付一定额度的ETH,但实际内部运行要用到一个叫Gas的概念. 以太坊使用了智能合约,交易要是按照智能合约的规定一步一步执行命令,每执行一个命令都会产生一定的消耗,这个消耗用Gas作为单位,另外,不同命令消耗的Gas数量也不相同. 每笔交易都被要求包括一个Gas limit(有的时…
以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开发应用,首先需要安装其客户端,本文使用基于Go语言的Geth, 其官网为https://github.com/ethereum/go-ethereum. 第一步 在命令行环境中输入以下命令, 连接到以太坊测试网络 geth --testnet --fast --cache=512 console 第二步…