一、浏览器打开https://remix.ethereum.org 地址

点击"+"新建一个sol文件,命名为faucet.sol

然后在代码区输入solidity代码

选择相关插件

将Solidity compiler、Deploy & run transactions插件激活,选择编译

编译成功后,会显示一个绿色的勾

再点击“Deploy & Run Transaction”

部署环境选择"Injected web3",这样把通过metamask客户端将我们的合约部署到测试环境上

接下来会提示我们remix需要将metamask里的账户关联上,选择“确定”,这样在Environment:显示链接的网络信息,这里为Ropsten测试网络,account里会显示我们metamask账户的地址和余额

再点击“Deploy”开始部署合约,弹出提示确认框,里面显示由metamask账户发起一笔0金额的交易来进行合约部署,并显示收取的GAS费

,点击确认,部署成功后,页面下方会显示部署的合约地址

同样,我们点开metamask钱包,也会显示一笔合约部署的交易记录

回到remix编译环境页面,点击“Deployed Contracts”的下拉箭头,可以显示本合约的合一调用的方法列表

一个fallback,一个winthdraw函数

我们在withdraw函数后面输入一个参数,我们输入1后面18个0,表示1个ETH,再点击“withdraw”调用函数

这是会弹出一个Gas费用估计不足的提示,我们忽略继续发送交易

接下来自动打开metamask客户端,显示如下

从钱包账户到合约地址的一笔交易,金额是0,因为是调用合约提币函数,所以金额为0,点击“确认”

我们看到remix的控制台已经显示出本次交易的HASH

但是还没有出结果,等待一会,下面出现

显示交易失败了,点击Debug后面的箭头,显示详情

这笔交易执行失败,由于我们新部署的合约里还没有ETH,所以调用withdraw函数,是无法提币的,那么首先我们向这个合约发送一些ETH

首先复制合约地址,然后打开metamask钱包,发送2个ETH到这个合约地址

下一步

确认

显示合约交互,状态为待处理

等到确认状态后,这时我们的合约地址里就有2ETH了,我们从ropsten.etherscan.io上查看交易详情

我们回到remix ide ,再次执行withdraw函数进行提币

我们输入1ETH,点击withdraw,后,弹出metamask界面,点击确认,金额为0,表示调用合约函数,发送本笔交易

控制台很快显示本次交易的HASH

再等待一会儿,交易确认

点击箭头,显示详情

打开etherscan.io查看详情

可以看到To 字段值,为合约地址,并且下面显示了调用的合约函数和输入参数,并显示从合约地址向外部账户地址转账的信息。但是这笔调用合约的交易金额为0,那么我们怎么查看函数里面转账的交易呢,我们知道合约账户是内部账户,是由外部用户账户创建的,所以我们在etherscan.io里点击"Internal Tansaction"即可显示合约内部交易记录

我们可以看到刚才调用合约函数成功提币的交易记录,从合约账户地址到外部账户地址,金额为1ETH

我们点击From 下面的地址,即合约地址,就会显示当前合约的详情,包括账户余额,外部交易记录

点击“Internal Txns”,显示合约内部交易记录,既外部账户调用合约函数所执行的转账交易

我们打开metamask钱包,看看账户地址是否多了这笔交易

有一笔withdraw交易,我们当时输入的金额为1ETH,账户余额显示为3.4987ETH,而之前账户余额为2.4989,减去本次交易的gas费用0.000174,再加上得到的1ETH,余额正好为3.4987ETH,至此函数执行成功。

使用remix的solidity在线编译环境部署一个faucet合约的更多相关文章

  1. Tools - 在线编译环境和工具汇总

    菜鸟教程 https://www.runoob.com/ 支持语言种类丰富,无需注册,包含教程.笔记.手册等内容. 菜鸟在线工具:https://c.runoob.com/ 菜鸟在线编译器:https ...

  2. [blockchain-035]eos的部署安装智能合约

    0.参考资料 https://github.com/EOSIO/eos/wiki 1. eos的github地址 https://github.com/EOSIO/eos 2.下载eos源码 git ...

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

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

  4. 第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1

    第四百节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装python3.5.1 1.检查系统是否安装了python [root@192 ~]# rpm -qa ...

  5. Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建

    [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...

  6. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  7. 第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块

    第四百零一节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署virtualenv虚拟环境安装,与Python虚拟环境批量安装模块 virtualenv简介 1.安装virtuale ...

  8. 第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6

    第三百九十九节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5安装mysql5.6 1.检测系统是否已经安装过mysql或其依赖,若已装过要先将其删除,否则第4步 ...

  9. 第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5系统环境设置

    第三百九十八节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署CentOS6.5系统环境设置 1.Linux安装配置 注意事项: 虚拟机网卡桥接模式 不要拨VPN 如果,网络怎么都 ...

随机推荐

  1. git显示不出来图标标志

    git操作的文件夹,发现没有显示出来是否上传的绿色图标,这样导致不清楚哪些文件是否修改,是否上传. 以下方法让我的问题解决了,但我并不知道是不是所有人的问题都适用这种方法,如果你也遇到这种问题,可以尝 ...

  2. jackson对Exception类型对象的序列化与反序列化

    发现问题 今天在调试系统错误通知的时候遇到了一个问题.我们在系统异常时候要通过队列系统发送各种通知到团队内部成员. 因此我写了一个通用接口.接口中有传递Exception对象到队列中,再由队列消费者解 ...

  3. 【Flink】flink执行jar报错:java.io.IOException: Error opening the Input Split file 或者 java.io.FileNotFoundException

    报错内容 flink执行jar时,报如下错误: org.apache.flink.client.program.ProgramInvocationException: Job failed. (Job ...

  4. 撸了一个简易的工具库: jeasy

    一年前,发现在工作的项目中存在大量使用monment的情况,但仅使用到最基础的format功能.monment的体积直接导致项目体积成倍增加,于是jeasy就诞生了. jeasy实现了monment最 ...

  5. 剑指offer_斐波那契数列

    package solution; public class Fibonacci { /* * f(n) = f(n-1) + f(n-2) n>1 * f(0) = 0 * f(1) = 1 ...

  6. c++文件指针读写图片文件

    #include "stdafx.h"#include <string>using namespace std;int _tmain(int argc, _TCHAR* ...

  7. 数据结构 双向链表 C语言实现

    dlist.h #ifndef __dList_H #define __dlist_H typedef int Item; typedef struct Node *PNode; typedef PN ...

  8. Oracle-DQL 2- 限定和排序

    1.where子句--查询30号部门员工的姓名,职位和工资SELECT ename,job,sal,deptno FROM empWHERE deptno = 30; --查询职位是manager的员 ...

  9. Arrays.asList()方法注意事项

    1.Arrays.asList()底层数组作为物理层实现.所以返回的List大小不可更改,即不可以做add().remove()操作,并且对List所做的任何变动都会致使原数组发生变动. public ...

  10. 对Redis 单进程、单线程模型的理解(网摘)

    1.基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理? 多线程处理可能涉及到锁 多线程处理会涉及到线程切换而 ...