前面讲了部署私有链以及新增账户,现在进行到了部署合约了,此操作真是踩了无数无数无数的坑,到写文章为止确实是已经部署好了,但是还有些坑是还没有解决的!

一、Solidity编译器

开始的时候用的https://remix.ethereum.org/    这个官网在线编译器,但不知道怎么回事,我k学上网都没问题,但就是访问这个网站有问题(事后用http就可以了),没办法我就打了其它编译器的主意,最开始是用的remix有一个中文版的编译器,但是用着发现好像无法连接私有链,没办法参照官方文档找其它编译器(文档地址:https://learnblockchain.cn/docs/solidity/installing-solidity.html),这么多里面看了一下,决定安装本地的Remix-Ide,参考安装文档(https://learnblockchain.cn/2018/06/07/remix-ide/),安装的过程中我已经不知道出现了多少问题了,直到最后!!!还是没有解决,卡在这这一步:npm install remix-ide -g安装已经成功了,执行remix-ide & remixd能看到安装的remix-ide,但是运行remix-ide又提示不支持的命令。搞了半天也没搞好,后来在群里有友人说还需要配置环境变量,但是我那时已经没有耐心了直接改了http用在线的remix了。后面我还是回去装本地版本的,实在不行的话安装docker再弄,环境问题真是糟心。

二、简单的helloBlockchain合约

1、新加sol文件,内容如下:

pragma solidity ^0.4.0;
contract helloBlockchain{
function renderHello() public pure returns (string){
return "Hello Blockchain";
}
}

因为我参考的文档都是老旧的,所以合约也是0.4.0-0.5.0版本的才行

2、编译

这是因为使用的版本问题,要找到0.4.0-0.5.0的版本添加进去

网上随便找到一个在线版本:https://solc-bin.ethereum.org/bin/soljson-v0.4.26+commit.4563c3fc.js,其它的也都可以在https://github.com/ethereum/solc-bin里面自行下载

3、部署合约

使用metamask的时候会自动选择Injected Web3来进行连接,请注意,这里的链网络一定要核查是与创世区块里面写的chainid、与启动区块链写的networdid一致的才行,不然会报错:invalid sender

部署要启动挖矿别忘了

四、遇到的问题

1、部署时报这个错:

原因:重启了电脑,私有链忘记启动了,哈哈哈

2、部署合约提示[ethjs-query] while formatting outputs from RPC '{"value":{"code":-32603"data":{"code":-32000"message":"invalid sender"}}}'

排查如下几点:

①需要解锁账户

②创世区块里面写的chainid与启动区块链写的networdid要一致,同时MetaMask设置-网络里面配置的id要同样是这个id

③启动私有链时要打开--allow-insecure-unlock,请参考我在第一章讲到的启动方式

好像还有其它问题,但只能想起来这三个了,真的是弄了好久啊,泪牛满面!!!

区块链开发学习第三章:私有链上部署helloBlockchain简单合约的更多相关文章

  1. 区块链开发学习第七章:第一个Dapp-猜拳游戏

    第一个简单的Dapp-猜拳游戏.本智能合约的功能很简单,就是用户与电脑猜拳,用户选择出手后,电脑随机一个选项,然后调用智能合约方法把两个选项值传过去,在智能合约上进行比较,并通过区块链合约事件广播结果 ...

  2. Intel汇编语言程序设计学习-第三章 汇编语言基础-上

    汇编语言基础 3.1  汇编语言的基本元素 有人说汇编难,有人说汇编简单,我个人不做评价,下面是一个简单的实例(部分代码): main PROC mov  eax,5  ;5送EAX寄存器 add   ...

  3. 《ORACLE数据库管理与开发》第三章学习之常用函数记录

    <ORACLE数据库管理与开发>第三章学习之常用函数记录 注:文章中的*代表所要操作的列名 1.lower(*)/upper(*),将此列下的值转为小写/大写 2.initcap(*):把 ...

  4. Android艺术开发探索第三章————View的事件体系(下)

    Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动 ...

  5. Android艺术开发探索第三章——View的事件体系(上)

    Android艺术开发探索第三章----View的事件体系(上) 我们继续来看这本书,因为有点长,所以又分了上下,你在本片中将学习到 View基础知识 什么是View View的位置参数 Motion ...

  6. Knockout应用开发指南 第三章:绑定语法(3)

    原文:Knockout应用开发指南 第三章:绑定语法(3) 12   value 绑定 目的 value绑定是关联DOM元素的值到view model的属性上.主要是用在表单控件<input&g ...

  7. Knockout应用开发指南 第三章:绑定语法(2)

    原文:Knockout应用开发指南 第三章:绑定语法(2) 7   click 绑定 目的 click绑定在DOM元素上添加事件句柄以便元素被点击的时候执行定义的JavaScript 函数.大部分是用 ...

  8. Knockout应用开发指南 第三章:绑定语法(1)

    原文:Knockout应用开发指南 第三章:绑定语法(1) 第三章所有代码都需要启用KO的ko.applyBindings(viewModel);功能,才能使代码生效,为了节约篇幅,所有例子均省略了此 ...

  9. Lucene/Solr搜索引擎开发笔记 - 第2章 Solr安装与部署(Tomcat篇)

    一.安装环境 图1-1 Tomcat和Solr的版本 我本机目前使用的Java版本为JDK 1.8,因为Solr 4.9要求Java版本为1.7+,请注意. 二.Solr部署到Tomcat流程 图1- ...

随机推荐

  1. Dubbo 学习(二)服务注册与发现

    在上一篇中我们提到,dubbo官网上推荐使用ZooKeeper作为注册中心.那么今天我们就通过代码来实践一番,看看一个dubbo的服务消费者如果找到通过ZooKeeper暴露自己的dubbo服务提供者 ...

  2. Redis-Cluster分片扩容

    redis分片分片场景在业务量相对较小的时候,可以将所有数据都存到一台机器上,只使用redis单机模式,不存在分片问题.如果业务的数据量超过一台物理机器的内存大小时,则会面对扩展问题,需要多台机器去存 ...

  3. english note [6.3to6.9]

    6.3 http://www.51voa.com/VOA_Special_English/pakistan-town-struggles-with-rise-in-hiv-infections-821 ...

  4. JavaFx全局快捷键实现(Kotlin)

    原文地址: JavaFx全局快捷键实现(Kotlin) | Stars-One的杂货小窝 最近整款工具需要用到全局快捷键,搜集了下网上的资料,发现有个JIntellitype库可以用来实现全局快捷键, ...

  5. Linux 清空日志的五种方法

    VIM 是linux下一款优秀的编辑器,但是上手难度略大,网络上可以找到的教程很多,快捷键也非常多,一时很难记住. 本文换一种思路,就是根据平时自己的常用需要,去反查VIM如何操作的,再记录下来,这样 ...

  6. Python技法-序列拆分

    Python中的任何序列(可迭代的对象)都可以通过赋值操作进行拆分,包括但不限于元组.列表.字符串.文件.迭代器.生成器等. 元组拆分 元组拆分是最为常见的一种拆分,示例如下: p = (4, 5) ...

  7. 洛谷1501 Tree II(LCT,路径修改,路经询问)

    这个题是一个经典的维护路径信息的题,对于路径上的修改,我们只需要把对应的链\(split\)上来,然后修改最上面的点就好,注意pushdown的时候的顺序是先乘后加 然后下传乘法标记的时候,记得把对应 ...

  8. CTF入门记录(1

    (https://ctf-wiki.org) 00 基础了解 CTF简介 (wolai.com) 00-1 CTF题目类型 Web 大部分情况下和网.Web.HTTP等相关技能有关. Web攻防的一些 ...

  9. python和shell 取日期为今天的行

    按条件取行 todolist.txt是存储所有数据的地方,每次查看数据库显得麻烦. 在执行命令后,要在终端显示今日应作事项. 首先用linux 的shell脚本来实现该功能. grep指令可以在文件中 ...

  10. ubuntu修改软件源的方法

    最快方法--替换法 刚安装好的ubutun,打开source.list后,用vim替换的方法将所有的us提付出替换为 cn,然后保存退出,更新即可. # vim /etc/apt/source.lis ...