Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Remix编译和部署以太坊智能合约

使用Remix编译和部署以太坊智能合约

作者头像
笔阁
发布于 2018-09-04 09:37:50
发布于 2018-09-04 09:37:50
1.6K00
代码可运行
举报
文章被收录于专栏:极客编程极客编程
运行总次数:0
代码可运行

Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约。

本文希望将一个很简单的代币合约(只能发行和转账),部署在本地和测试网络上,测试下它的功能。

详细描述使用 Remix 的步骤及使用上可能碰到的问题。

之前开发过以太坊Ethereum智能合约,但没有记录过开发的过程和碰到的问题,觉得挺可惜。这次重新开始,从最基础开始,一步步学习。

开发环境

不需要安裝,直接在任何浏览器启动 Remix。

取得代币合约

代币合约的范例很多,Ethereum 官网有提供一个最小可执行的代币合约(MINIMUM VIABLE TOKEN):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pragma solidity ^0.4.0;
contract MyToken {
/* This creates an array with all balances */
    mapping (address => uint256) public balanceOf;
    
    /* Initializes contract with initial supply tokens to the creator of the contract */
    function MyToken(uint256 initialSupply) public {
        balanceOf[msg.sender] = initialSupply;              
        // Give the creator all initial tokens
    }
    
    /* Send coins */
    function transfer(address _to, uint256 _value) public {
        require(balanceOf[msg.sender] >= _value);           
        // Check if the sender has enough
        require(balanceOf[_to] + _value >= balanceOf[_to]); 
        // Check for overflows
        balanceOf[msg.sender] -= _value;                    
        // Subtract from the sender
        balanceOf[_to] += _value;                  
        // Add the same to the recipient
    }
}

这个 MyToken 合约真的很简单,只能做两件事:

  1. 创建代币:发起合约时创建指定数量的代币,代币拥有者是发起合约的 Ethereum 帐户
  2. 转移代币:转移指定数量的代币到指定的 Ethereum 帐户

至于一个完整的代币合约,可参考ERC20 Token使用手冊。

使用 Remix 编译合约

  1. 点右上角 + 新增一个合约 名称任意只要扩展名是 “.sol”。
  1. 复制合约內容到该合约并编译 Remix 默认设置会自动编译,只要旁边没有蹦出红色的 error 提示就代表编译成功。

在本地部署合约

1.设置网络 点选左上的 run。

Environment 选择 JavaScript VM 代表所有资料都是存在本地(功能类似 testrpc)。它会提供 5 个虚拟账户每个有 100 ETH,随便选择一个账户(要记住后面一直要用)。

2.发送交易部署合约 选择 MyToken。可以看到 create 按钮。且已根据合约內容显示必须输入 initialSupply(也就是要发行的代币数量)。输入一个数目点create,就可以发送交易部署合约。

合约部署成功后,可以看到合约的使用界面。Remix 会自动根据合约的內容,产生对应的合约使用界面。可以看到合约有两个功能:balanceOf(查询余额) 和 transfer(转移代币)。

底下可以看到 log(记录每一次的操作)。实际上部署合约是通过一个 Ethereum 交易完成,点 Details 可以看到这笔交易详细资料。

执行合约 — 查询余额

1.选择刚刚发起合约的账户

可以点右边的按钮复制

2.输入账户 注意要用 “” 把账户括起來,示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"0xca35b7d915458ef540ade6068dfe2f44e8fa733c"

3.点击 balanceOf

可以看到执行结果,也就是目前这个账户的代币余额。

可能的错误情況

说明一点,因为数据传输是用 JSON 格式,所以要加上 “”。如果忘了 “” 就会在 log 中看到错误提示:

执行合约 — 转移代币

1.选择要输出的账户 选择刚刚发起的合约的账户。

2.输入要转入的账户 选择並复制另一个账户。在合约界面 transfer 后面的输入位置,输入转入账户和要转移的代币数量。账户同样需要用 “” 括起來,示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"0x4b0897b0513fdc7c541b6d9d7e929c4e5364d2db", 10

3.点击 transfer 点击 transfer,成功后会看到 log 更新。

4.确认余额更新 这时在查询转入账户的余额,就可以看到代币余额增加啦!

错误情況 如果选择要转出的账户代币余额不足,这个交易就会失败,会在 log 看到错误提示。

在测试网络部署合约

1.安裝 MetaMask 首先,要连到测试网络,这就要安裝 MetaMask。它是浏览器端的 Ethereum 钱包,可以连結 Ethereum 公共和测试网络。安装后需要建立 Ethereum 账号,这个这里就不细讲了。

成功启动后是这样的。

我们选择 Ropsten Test Net

2.选择测试网络

回到 Remix,这次 Environment 选择 Injected Web3,Remix 会自动连接 MetaMask。

成功连接后会看到和 MetaMask 相同账号和 Ether 余额

3.部署合约 接着用同样的方式,按 create 部署合约,就会看到 MetaMask 的弹出窗口。直接按 submit 发送交易。

稍等片刻(需要等交易被确认),部署成功后合约的使用界面就会出来。

ok,现在可以用同样的方式使用合约啦!

总结下

Remix 提供一个 Solidity 智能合约的开发环境,可以方便的编译、部署、执行甚至找错,适合编程经验不多的初学者。但无法做到版本控制、测试及和其他开发工具一起使用等,实际上要开发 DApp,使用 Truffle3、Ganache、web3.js 来编译和部署合约比较方便和专业些更适合开发人员。

推荐一个适合区块链新手的以太坊DApp开发教程:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【以太坊篇】-完成一个简易的智能合约部署
首先1号是尝试过很多方法,最后吐血总结的。部署本地以太坊平台,最后以钱包安装问题告终,将remix换成本地登录,最后以geth安装告终。(题外:成功过一次后来就用不了了)最后选择用在线remix结合metamask来部署连接。
帆说区块链
2022/04/26
8880
【以太坊篇】-完成一个简易的智能合约部署
如何开发创建ERC20以太坊代币
可以把ERC20简单理解成以太坊上的代币协议,所有基于以太坊开发的代币合约都遵守这个协议。遵守这些协议的代币我们可以认为是标准化的代币,而标准化带来的好处是兼容性好。这些标准化的代币可以被各种以太坊钱包支持,用于不同的平台和项目。说白了,你要是想在以太坊上发行代币融资,必须要遵守ERC20标准。
笔阁
2018/09/04
1.5K0
如何开发创建ERC20以太坊代币
第七课 技术小白如何在45分钟内发行通证(TOKEN)并上线交易
通过逐步的指导和截图举证,一步步带领一个技术小白完成一个数字货币(通证,代币,TOKEN)的发布演示和上线交易。
辉哥
2018/08/10
1.2K0
第七课 技术小白如何在45分钟内发行通证(TOKEN)并上线交易
以太坊ERC20协议以及发行自己代币
ERC-20 标准是在2015年11月份推出的,使用这种规则的代币,表现出一种通用的和可预测的方式。
若与
2018/11/23
2.4K0
一步步教你创建自己的数字货币(代币)进行ICO
本文从技术角度详细介绍如何基于以太坊ERC20创建代币的流程. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊、智能合约有所了解,如果你还不了解,建议你先看以太坊是什么
Tiny熊
2018/06/21
2.4K0
实现一个可管理、增发、兑换、冻结等高级功能的代币
本文主要介绍代币高级功能的实现: 代币管理、代币增发、代币兑换、资产冻结、Gas自动补充。 写在前面 在上一篇:一步步教你创建自己的数字货币(代币)进行ICO中我们实现一个最基本功能的代币,本文将在上一遍文章的基础上,讲解如果添加更多的高级功能。 实现代币的管理者 虽然区块链是去中心化的,但是实现对代币(合约)的管理,也在许多应用中有需求,为了对代币进行管理,首先需要给合约添加一个管理者。 我们来看看如果实现,先创建一个owned合约。 1234567891011121314151617 contract
Tiny熊
2018/06/21
1.7K0
以太坊智能合约审计 CheckList
在以太坊合约审计checkList中,我将以太坊合约审计中遇到的问题分为5大种,包括编码规范问题、设计缺陷问题、编码安全问题、编码设计问题、编码问题隐患。其中涵盖了超过29种会出现以太坊智能合约审计过程中遇到的问题。帮助智能合约的开发者和安全工作者快速入门智能合约安全。
Seebug漏洞平台
2018/12/13
1K0
智能合约安全审计技术概览
智能合约是区块链技术的重要组成部分,它能够自动执行代码并将结果写入区块链以实现各种业务场景,然而由于智能合约本质上是代码,因此也存在着相应的安全风险,如果智能合约存在漏洞,黑客就有可能利用这些漏洞进行攻击,导致资产损失甚至系统崩溃,因此对智能合约进行安全审计是至关重要的,本文将概述智能合约安全审计技术的相关知识为读者带来更深入的了解
Al1ex
2023/08/10
9730
智能合约安全审计技术概览
Python在区块链开发与智能合约编写中的实战应用
区块链技术正逐渐成为各行各业的焦点,而Python作为一种灵活且强大的编程语言,被广泛应用于区块链开发和智能合约编写。本文将介绍如何利用Python进行区块链开发以及智能合约的编写,并提供代码实例来帮助读者更好地理解这些概念。
一键难忘
2024/08/14
3520
以太坊合约审计 CheckList 之“以太坊智能合约编码安全问题”影响分析报告
作者:LoRexxar'@知道创宇404区块链安全研究团队 时间:2018年9月6日
Seebug漏洞平台
2018/09/30
7080
以太坊合约审计 CheckList 之“以太坊智能合约编码安全问题”影响分析报告
深入理解以太坊区块链的token
描述除BTC以外的所有加密Token的术语。Token的名字来自于它们是Token和传统法币的替代品。
JavaEdge
2024/07/30
4800
“以太坊智能合约编码安全问题”影响分析报告
这篇扫描报告其实算是一片比较特殊的文章,因为这是checklist唯一被我直接标记为安全问题的一类,其中很多问题虽然特征明显,但修复逻辑却千变万化,所以统计数据一直波动很大,犹豫了很久才发出来,图片的很多涉及到的合约并不一定真的存在问题,但仍然值得注意。
LoRexxar
2023/02/21
3940
“以太坊智能合约编码安全问题”影响分析报告
第八课 如何调试以太坊官网的智能合约众筹案例
【本文目标】 发布并执行通ETH官网的众筹合约代码。 【前置条件】 参考《第七课 技术小白如何在45分钟内发行通证(TOKEN)并上线交易》完成了ColorBay的发行。 【技术收获】 1). 调试成功以太坊官网的智能合约众筹代码 2). REMIX和myetherwallet配合的智能合约代码调试
辉哥
2018/08/10
1.7K0
第八课 如何调试以太坊官网的智能合约众筹案例
Time-locked Wallets:一个以太坊智能合约的教程
本次推荐的是一篇关于通过以太坊了解区块链的教程,能力有限,本身没接触过,各位尽量看原文吧。
WindCoder
2018/09/19
2.7K0
Time-locked Wallets:一个以太坊智能合约的教程
在以太坊上部署一个确定性的合约
在基于 EVM 的协议[4]上部署一个新的合约,通常会产生一个无法事先知道的合约地址。幸运的是,EIP-1014[5]中介绍了一种预先计算合约地址的方法。
Tiny熊
2022/11/07
9880
在以太坊上部署一个确定性的合约
在Substrate链上跑Solidity ERC20智能合约
本实践案例中,我们首先会搭建和启动一条substrate链,再通过MetaMask这款著名的以太坊钱包浏览器插件,通过自定义RPC的方式,接入我们搭建好的substrate链。
Tiny熊
2020/07/24
1.4K0
以太坊合约审计 CheckList 之“以太坊智能合约规范问题”影响分析报告
作者:LoRexxar'@知道创宇404区块链安全研究团队 发布时间:2018/08/13
Seebug漏洞平台
2018/08/16
7430
以太坊合约审计 CheckList 之“以太坊智能合约规范问题”影响分析报告
Solidity:ERC20
ERC20是以太坊区块链上的一个标准,用于创建和发行智能合约,实现代币化的应用。它定义了一组通用的接口,使得开发者可以创建和使用代币,而不需要了解底层区块链技术的细节。以下是ERC20标准中的主要接口及其含义:
孟斯特
2024/06/11
2040
Solidity:ERC20
第十二课 SOLIDITY语法难点解析及故障排查
(1)推荐编辑器 目前尝试 Solidity 编程的最好的方式是使用 Remix (需要时间加载,请耐心等待)。Remix 是一个基于 Web 的 IDE,它可以让你编写 Solidity 智能合约,然后部署并运行该智能合约。 如果外网不能访问,可以访问欧阳哥哥搭建的REMIX编辑器 (2)Visual Studio Extension Microsoft Visual Studio 的 Solidity 插件,包含 Solidity 编译器。 (3)Visual Studio Code extension Microsoft Visual Studio Code 插件,包含语法高亮和 Solidity 编译器。
辉哥
2018/08/10
1.2K0
第十二课 SOLIDITY语法难点解析及故障排查
以太坊·代币开发详解
本文节选自《Netkiller Blockchain 手札》
netkiller old
2018/02/24
2.5K1
以太坊·代币开发详解
推荐阅读
相关推荐
【以太坊篇】-完成一个简易的智能合约部署
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档