标签 以太坊智能合约 下的文章

2018
04-25

以太坊智能合约开发第七篇:智能合约与网页交互 HOT

上一篇中,我们通过truffle开发框架快速编译部署了合约。本篇,我们将来介绍网页如何与智能合约进行交互。

编写网页

首先我们需要编写一个网页。打开 smartcontract/app/index.html 文件,修改 head 区代码如下:

<head>
  <title>Hello - Truffle</title>
  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  <!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
  <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
  <script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
  <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
  <script src="./app.js"></script>
</head>

修改 body 区代码如下:

<body>
  <div class="alert alert-success" role="alert" style="display:none;" id="message-box"></div>
  <div class="form-group">
    <input type="text" class="form-control" id="username" aria-describedby="basic-addon1">
  </div>
  <button type="submit" id="submit" class="btn btn-success">调用合约</button>
  <button type="submit" id="cancel" class="btn btn-default">重置</button>
</body>
查看全文 >
2018
04-13

以太坊智能合约开发第六篇:truffle开发框架 HOT

在前面几篇教程中,我们实现了一个简单的 Hello 合约,并通过 solc 编译器将合约代码编译后,部署在私有链Ganache上。本篇将介绍通过truffle框架来构建自动编译、部署合约代码。

truffle框架

Truffle是基于Solidity语言的一套开发框架,它简化了去中心化应用(Dapp)的构建和管理流程。本身是采用Javascript编写,支持智能合约的编译、部署和测试。
truffle开发框架提供了很多功能,简化了我们的开发、编译、部署与调试过程:

  • 内置了智能合约编译、链接、部署和二进制文件的管理
  • 方便快速开发的合约自动化测试
  • 方便扩展的、脚本化的部署与发布框架
  • 方便的网络管理功能。不论是公有网络还是私有网络
  • 基于ERC190标准,使用EthPM & NPM进行依赖包管理
  • 内置控制台功能。项目构建后,可以直接在命令行调用输出结果,方便了开发调试
  • 可配的构建流程,支持持续集成。
  • 支持外部脚本的执行

接下来,我们将通过truffle框架来构建 Hello 合约的编译、部署过程。

truffle安装

npm install -g truffle

安装好后,查看一下版本信息:

truffle version

本篇示例基于如下版本:

Truffle v4.0.1 (core: 4.0.1)
Solidity v0.4.18 (solc-js)
查看全文 >
2018
04-12

以太坊智能合约开发第五篇:字符串拼接—Solidity HOT

上一篇,我们实现了一个简单的智能合约。用户输入什么字符串,合约就原样返回什么。在文章最后抛出了一个问题:如果我们事先在合约里定义好 Hello 字符串,如何与 name 变量进行字符串拼接?

在智能合约里进行字符串的拼接可不是一件简单的事情。本篇就来介绍智能合约里的字符串拼接。

尝试

我们先用绝大部分语言都通用的连接符 +. 来尝试着修改代码:

//pragma关键字:版本申明。
//用来指示编译器将代码编译成特定版本,以免引起兼容性问题
//此处不支持0.4.0之前的编译器,也不支持0.5.0之后的编译器(条件为 ^)
pragma solidity ^0.4.0;

//contract关键字:合约申明
//和Java、PHP中的class类似
//此处是申明一个名为Hello的合约
contract Hello {

    string str="Hello ";

    //public: 函数访问属性(后续文章为详细阐述)
    //returns (string): 定义返回值类型为string
    function say(string name) public returns (string) {
        return str + name;
    }
}
查看全文 >
2018
04-12

以太坊智能合约开发第四篇:实现Hello World智能合约 HOT

绝大部分开发者学习一门语言的时候,都是从输出一个 Hello World 开始。我们也从实现一个 Hello World 合约为切入点,开始进入智能合约的世界吧。

环境准备

安装好 nodenpm。这里对node和npm的安装过程,不做详细介绍。本篇依赖的环境版本:

Node : v8.9.0
Npm: 5.5.1

在你的代码目录里,创建名为 smartcontract 的文件夹,并创建如下两个文件 package.jsonHello.sol

smartcontract
├── Hello.sol
└── package.json

package.json 文件里,添加如下依赖包配置:

{
  "name": "smartcontract",
  "version": "0.0.1",
  "dependencies": {
    "fs": "0.0.1-security",
    "solc": "^0.4.21",
    "web3": "^0.20.0"
  }
}

fs模块用于文件的相关操作
solc模块是编译器
web3模块是以太坊提供的工具包,主要用于与合约的通信

接下来执行 npm install 下载相关的依赖包。

查看全文 >
2018
04-11

以太坊智能合约开发第三篇:安装节点工具Ganache HOT

在正式开始编写智能合约之前,我们需要先安装一个以太坊客户端,也就是我们常说的以太坊节点。上一篇有提到Geth,但是它会消耗很多时间来同步以太坊的所有区块数据,并占用很大的磁盘空间。目前已经有几十G大小,不久将达到上百G。在开发过程中,我们推荐使用以太坊区块链的私有链Ganache来搭建节点。

Ganache

Ganache可以快速启动个人以太坊区块链,并可以使用它来运行测试,执行命令、检查状态,同时控制链条的运行方式。

安装

打开官网 http://truffleframework.com/ganache/ , 并点击 DOWNLOAD 按钮:

查看全文 >
2018
04-10

以太坊智能合约开发第二篇:理解以太坊相关概念 HOT

很多人都说比特币是区块链1.0,以太坊是区块链2.0。在以太坊平台上,可以开发各种各样的去中心化应用,这些应用构成了以太坊的整个生态。目前,以太坊是区块链世界里生态建设最好的底层公链。本篇将以通俗易懂的方式介绍以太坊开发中涉及到的相关概念,带领大家轻松入门。

以太坊

以太坊(Ethereum)是一个建立在区块链技术之上的、图灵完备的去中心化应用平台。它允许任何人在平台中通过智能合约技术开发、部署和使用去中心化应用。

>  有没有感到和ios、Android平台有点类似?

在以太坊未问世之前,写区块链的应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法、共识机制、网络协议等等。2013、2014年那时候的很多山寨币就是这样,改改比特币代码就造出来一个新币。

以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。

>  目前围绕以太坊已经形成了一个较为完善的开发生态圈:社区支持、开发框架、开发工具等等。

智能合约

网络上关于智能合约的解释都很晦涩。我们可以简单的理解为在区块链上,由事件驱动、以代码形式存在、可执行的特殊交易合同。它是代码、数据的集合。

智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。

目前除数字货币之外,真正落地的应用还不多。和移动互联网刚兴起之时各种各样、各行各业的APP推陈出新一样,去中心化应用的市场在初期肯定有一个红利期。对此有兴趣的开发者,可抓住机会。

查看全文 >
2018
04-09

以太坊智能合约开发第一篇:IDE对solidity语法的支持 HOT

最近在研究以太坊智能合约的开发。随着研究的深入,准备写一个系列教程,将我的实际经验与大家分享,供大家参考借鉴。

solidity是什么?

以太坊官方推荐使用Solidity语言来开发以太坊智能合约。Solidity是一种语法类似JavaScript的高级语言,它被设计成以编译的方式生成以太坊虚拟机代码。在后续内容中你将会发现,使用它很容易创建用于投票、众筹、封闭拍卖、多重签名钱包等等智能合约。

IDE对solidity语法的支持

工欲善其事,必先利于器。在使用 Solidity语言 编写智能合约开始之前,需要一款得心应手的IDE。本篇推荐使用 IntelliJ IDEA 系列的 WebStorm

查看全文 >
微信扫一扫