以太坊私有链DApp开发环境搭建(二)

搭建以太坊私有链:以太坊客户端 Geth 详细介绍与搭建教程 官方文档:https://geth.ethereum.org/geth是以太坊的执行客户端,其全称是go-ethereum,它是使用 Go 语言编写的一个软件,允许用户与以太坊区块链进行交互、运行以太坊节点、发送交易、部署智能合约以及执行智能合约代码。也可作为一个 HTTP-RPC 服务器对外提供 JSON-RPC 接口。它是由以太坊的官方开发团队开发和维护的,但也有许多社区贡献者参与其开发。 阅读详情

三、运行私链节点

3.1创世块配置

创建一个节点目录node1,并在其中创建私链的创世块配置文件:

~$ mkdir node1
~$ cd node1
~/node1$ touch private.json

然后编辑内容如下:

{
    "config": {
        "chainId": 7878,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "difficulty": "200",
    "gasLimit": "2100000",
    "alloc": {
        "7df9a875a174b3bc565e6424a0050ebc1b2d1d82": { "balance": "300000" },
        "f41c74c9ae680c1aa78f42e5647a62f353b7bdde": { "balance": "400000" }
    }
}

  • config.chainId:用来声明以太坊网络编号,选择一个大于10的数字即可。
  • difficulty:用来声明挖矿难度,越小的值难度越低,也就能更快速地出块。

3.2初始化私链节点

执行geth的init命令初始化私链节点:

~/node1$ geth --datadir ./data init private.json

这会在当前目录下创建data目录,用来保存区块数据及账户信息:

~/node1$ ls
data private.json

可以上述命令写到一个脚本init.sh里,这样避免每次都输入那么多记不住的东西:

~/node1$ touch init.sh
~node1$ chmod +x init.sh

编辑内容如下:

#!/bin/bash
geth --datadir ./data init private.json

在部署下一个节点时,就可以直接执行这个脚本进行初始化了。例如,在另一台机器上:

~/node1$ ./init.sh

3.3启动私链节点

从指定的私链数据目录启动并设定一个不同的网络编号来启动节点:

~/node1$ geth --rpc --datadir ./data --networkid 7878 console

同样,你可以用一个脚本console.sh来简化启动节点时的输入:

~/node1$ touch console.sh
~/node1$ chmod +x console.sh

编辑内容如下:

#!/bin/bash
geth --rpc \
      --rpcaddr 0.0.0.0 \
      --rpccorsdomain "*" \
--datadir ./data \
--networkid 7878 \
console

  • rpcaddr:用来声明节点RPC API的监听地址,设为0.0.0.0就可以从其他机器访问API了;
  • rpccorsdomain:用于解决web3从浏览器中跨域调用的安全限制问题。 
    以后启动节点,只要直接执行这个脚本即可:
~/node1$ ./console.sh

3.4 账户管理

3.4.1 查看账户列表

在geth控制台,使用eth对象的accounts属性查看目前的账户列表:

> eth.accounts
[]

因为我们还没有创建账户,所以这个列表还是空的。

3.4.2创建新账户

在geth控制台,使用personal对象的newAccount()方法创建一个新账户,参数为你自己选择的密码:

> personal.newAccount('78787878')
0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49

输出就是新创建的账户地址(公钥),你的输出不会和上面的示例相同。geth会保存到数据目录下的keystore文件中。密码要自己记住,以后还需要用到。

3.4.3查询账户余额

在geth控制台,使用personal对象的getBalance()方法获取指定账户的余额,参数为账户地址:

> eth.getBalance(eth.accounts[0])
0
  • 或者直接输入账户地址:
> eth.getBalance('0xd8bcf1324d566cbec5d3b67e6e14485b06a41d49')
0

新创建的账户,余额果然为0。

3.4.4挖矿

没钱的账户什么也干不了,需要挖矿来挣点钱。 
在geth控制台执行miner对象的start()方法来启动挖矿:

> miner.start(1)

等几分钟以后,检查账户余额:

> eth.getBalance(eth.accounts[0])
2.695e+21

钱不少了,2695ETH了,目前市值将近500万人民币了,哈。 
执行miner对象的stop()方法停止挖矿:

> miner.stop()

3.4.5解锁账户

在部署合约时需要一个解锁的账户。在geth控制台使用personal对象的unlockAccount()方法来解锁指定的账户,参数为账户地址和账户密码(在创建账户时指定的那个密码):

> eth.unlockAccount(eth.accounts[0],'78787878')
true

4.1 新建DApp项目

执行以下命令创建项目目录并进入该目录:

~$ mkdir demo
~$ cd demo

然后用webpack模版初始化项目骨架结构:

~/demo$ truffle unbox webpack
Downloading…
Unpacking…
Setting up…
Unbox successful. Sweet!

4.2 安装项目依赖的NPM包

执行以下命令安装nmp包:

~/demo$ npm install

4.3 修改truffle配置

truffle.js中,修改port为8545,因为geth默认在8545端口监听:

module.exports = {
  networks:{
    development: {
      …
      port: 8545
      …
    }
  }
}

4.4 启动节点

在 另一个终端,执行以下命令启动节点软件,以便部署合约并执行交易:

~$ cd node1
~/node1$ ./console.sh
>
  • 注意:为了在节点上部署合约,别忘了启动geth后先解锁账户:
> personal.unlockAcount(eth.accounts[0],'78787878')
true

4.5 编译合约

执行以下命令编译项目合约:

~/demo$ truffle compile

4.6 部署合约

执行以下命令来部署合约:

~/demo$ truffle migrate

如果你之前忘了在geth控制台解锁账户,会看到如下错误,参考前面说明进行解锁即可:

Error: authentication needed: password or unlock

如果已经正确地解锁了账户,你会看到部署过程停止在如下状态:

Replacing Migrations…
… 0x3088762a5bc9…

这是因为truffle在等待部署交易提交,但是我们在私链中还没有启动挖矿。 
现在切换回geth终端窗口,查看交易池的状态:

> txpool.status
{
  pending:1,
  queued:0
}
  • 果然有一个挂起的交易!启动挖矿就是了:
> miner.start(1)

稍等小会儿,再查看交易池的状态:

> txpool.status
{
  pending:0,
  queued:0
}

交易已经成功提交了。我们可以停止挖矿了,因为它太占CPU了:

> miner.stop()

现在切换回truffle那个终端,部署过程也正确地执行完了。


4.7 启动DApp

执行以下命令来启动DApp:

~/demo$ npm run dev



最后在浏览器里访问http://localhost:8080即可。 

如果你希望从别的机器也可以访问你的DApp应用,修改一下package.json:
{
  scripts:{
    "dev": "webpack-dev-server –-host 0.0.0.0"
  }
}


推荐一个以太坊DApp教程:


最后在浏览器里访问http://localhost:8080即可。 

如果你希望从别的机器也可以访问你的DApp应用,修改一下package.json:
{
  scripts:{
    "dev": "webpack-dev-server –-host 0.0.0.0"
  }
}
geth搭建私有链以太坊开发实现Dapp 直接在主目录下创建文件夹 vim genesis.json 英文键盘点击i,复制粘贴下面代码–>esc–>:wq!强制保存退出 报错:Fatal: Failed to write genesis block: unsupported fork ordering: eip150Block not enabled, but eip155Block enabled at 0 修正: { "alloc": { }, "config":{ "chainId":15 阅读详情

相关推荐

基于以太坊上实现DApp的登录注册

“我总偏向将权利分散于网络。这样一来,就没任何组织能轻松获取控制。我不相信巨大的中央组织,天性使然。”——Bob Tayor, ARPANET缔造者 本文原创发表于所问HT前端团队,原文地址:http://ht.askingdata.com/article/5af91967ab8f0f686da0d11d 今年年初的“三点钟区块链群”彻底激起了以加密数字货币的主的区块链浪潮,资本的驱动...

weixin_42333232的博客 8167

以太坊开发:Dapp示例-简单投票(一)

1.创建简单投票项目目录并引入包管理工具: jiahuan@ubuntu:~$ cd project jiahuan@ubuntu:~/project$ ls myChain myDevChain web3_test jiahuan@ubuntu:~/project$ mkdir simple_vote_dapp jiahuan@ubuntu:~/project$ cd simple_vote_dapp/ jiahuan@ubuntu:~/project/simple_vote_dapp$ ls jia

weixin_42769202的博客 402

一起学:以太坊智能合约开发

课程介绍 无论在科技圈还是金融圈,“区块链”俨然成了最热的词汇。2016年,区块链写入了国家的十三五规划中;2017年,央行基于区块链技术的数字票据交易平台测试成功;同年,工信部发布了首个区块链参考架构标准。
经过2017年如火如荼的投资盛宴,区块链开始逐渐走向应用落地,业内都在积极探索使用场景。如金融领域的资产贸易、支付系统、金融服务,其他领域的电子商务、社交通讯、游戏娱乐等等。同时,BAT、迅...

GitChat 1万+

以太坊私链搭建(Windows+geth)

文章目录1. Geth下载与安装1.1 Geth下载1.2 Geth安装2. 搭建私有链2.1 创世区块配置2.2 创世区块初始化3 启动私链节点 / 进入geth控制台4 创建账户5 挖矿挖矿6 geth控制台常用命令 1. Geth下载与安装 1.1 Geth下载 https://geth.ethereum.org/downloads/ (下面是我下载的版本) 1.2 Geth安装 设置系统环境变量 /刚刚安装选择的路径 电脑/计算机 ——> 属性 ——> 高级系统设

weixin_44826468的博客 9802

DApp入门代码示例

DApp入门代码示例,使用solidity,包括基本实现和测试代码,参考https://blog.youkuaiyun.com/zzz19920821/article/details/84993023

ios生成海报使用dom-to-image中toPng报错isTrusted:true

主要是ios中safari浏览器解析错误,引起的报错,主要引起原因toPng会调用toSvg,toSvg直接将html标签内容通过svg中foreignObject标签直接包裹,然后转base64, 通过data:image/svg+xml;解决办法:二次生成(调用两次),判断ios or 安卓,生成第一次生成,不用参数,例如:scale: 3,在第二次生成再进行清晰度操作,避免多次生成,引起性能消耗。以上种种很多案例,使用canvase进行转换的,标签丢失,直接toPng版本的,兼容性问题。

weixin_44601570的博客 2106

windows 系统下搭建以太坊私有链环境

下载安装gethhttps://geth.ethereum.org/downloads/

曾经的你_的博客 3517

BIOS硬件监控实战:如何手动读取IT8738芯片的温度与风扇数据(附代码)

本文深入探讨了如何绕过操作系统和HWMonitor等监控软件,直接通过寄存器级操作读取IT8738超级I/O芯片的硬件监控数据。文章提供了从动态定位EC空间、构建底层读写函数到解码传感器寄存器映射的完整实战指南,并附有C语言代码示例,帮助开发者理解BIOS硬件监控的底层原理,适用于定制硬件开发与故障诊断。

weixin_29192211的博客 110

windows搭建pow私有链 学习笔记

文章目录前言一、以太私有链搭建1. 下载并安装geth2. 启动节点(1)验证geth是否安装完成(2)准备创世块(3)初始化创世块(4)启动节点3. 挖矿(1)相连窗口(2)创建账户(3)挖矿总结 前言 搭建pow私有链 一、以太私有链搭建 1. 下载并安装geth Geth 又名Go Ethereum.是以太坊协议的三种实现之一,由Go语言开发,完全开源的项目。Geth可以被安装在很多操作系统上,包括Windows、Linux、Mac的OSX、Android或者IOS系统. geth的作用:

qq_43087667的博客 894

Windows下的Geant4安装教程

本教程将从0开始展示在Windows下如何安装Geant4,包括各种辅助工具(QT、Cmake、Visual Studio)的下载安装,环境变量的配置,以及example的生成等。

weixin_49065278的博客 4113

(一)PyBullet机器人仿真入门:从环境搭建到实例解析

本文详细介绍了PyBullet机器人仿真平台从零开始的完整入门指南。内容涵盖环境搭建、官方示例解析、核心操作(连接、世界与模型)、关节控制与状态读取,以及碰撞检测、传感器模拟等高级功能,帮助读者快速掌握这一强大的机器人仿真工具。

weixin_29062865的博客 1383

搭建以太坊私链(单节点,多节点,windows,linux)

网上关于如何搭建私链的文章很多,但是看来看去都是一样的,千篇一律,想找点不一样,新鲜的知识很难,本文总结归纳那些文章的内容,从使用私链的角度出发写了一篇比较全面的博客,内容包含以下几点: windows单节点 windows多节点 linux创建节点并,windows远程使用linux节点 linux节点和Windows节点建立连接(网络原因,提供思路) 1.windows单节...

hantangduhey的博客 1万+

微信服务号配置总是提示“参数错误”?我就是这样一步步查出问题的

前两天,我遇到了一个很诡异的问题:在微信服务号后台配置服务器地址时,总是提示“参数错误,请重新填写”。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1278

如何搭建以太坊私链——小白入门

    “区块链”这个词近几个月的社会出现频率越来越高,虽然很多人是冲着币圈去的,但是还是有很多技术宅是真正在研究区块链技术的。     今天老林就来给大家唠唠怎么搭建以太坊的私有链,小白入门级别的,大神请略过。   说明 一、为什么用到私有链? 在以太坊的共有链上部署智能合约、发起交易需要花费以太币。而通过修改配置,可以在本机搭建一套以太坊私有链,因为与公有链没关系,既不用同步公有链庞...

华农老林的博客 9515

从零开始学 AUTOSAR:深入浅出 SAE J1939 诊断通信管理器(J1939Dcm)深度完整版

SAE J1939 是美国汽车工程师学会制定的重型车辆 CAN 总线通信标准,覆盖卡车、客车、工程机械、农机、船舶等,是商用车领域的 “通用语言”。基于CAN 2.0B 扩展帧(29 位 ID)(车规主流)PGN(参数组号)+ SPN(可疑参数号)核心标准:J1939-21:数据链路层(CAN 帧格式、地址声明)J1939-71:应用层(普通信号、报文)诊断层(核心!J1939Dcm 依据)J1939-81:网络管理(地址管理、节点检测)

getusushu的博客 118

SpringBoot系列之实现一个AI聊天助手

本文介绍了基于Spring Boot框架实现的AI聊天助手项目。该项目使用Spring Boot 3.2.3、Spring AI 1.0.0-M5等技术栈,集成DeepSeek-R1-Distill-Llama-8B模型实现智能对话功能。文章详细介绍了项目配置流程、运行方式和核心代码实现,包括ChatMessage模型类和服务类ChatService的关键功能,如消息处理、历史记录管理和AI响应获取等。读者可通过提供的GitHub链接获取完整代码,快速搭建自己的AI聊天应用。

Nicky's blog 1452

基于以太坊的DAPP实现

基于以太坊的DAPP实现 系统采用vm下ubuntu16.04 一、 以太坊介绍        以太坊是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(“以太虚拟机” Ethereum Virtual Machine)来处理点对点合约。   &nbs...

八月对半 2126

某物data魔改与变种算法还原(含加解密Py纯算)

某物data加解密、设备指纹魔改、变异、自定义加密分析与纯算还原

吴秋霖的博客 1281

Docker搭建以太坊私有链

参考攻略: 使用Docker搭建以太坊私有链并部署合约 本文主要是解决部分指令的报错问题,尽量不包含原文内容。 本文环境:阿里云的centos7 创建新用户的文件信息 如果按照攻略,在创建完新用户后,对应的用户信息会存放在/workspace/dapp/miner/data/keystore路径下,可以通过ls指令查看: 创建挖矿节点遇到的问题 docker: Error response from daemon: OCI runtime create failed: container_linux.go

qq_44855194的博客 1504

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

以太坊Dapp开发

名词: DApp:去中心化的应用程序。以太坊社区把基于智能合约的应用称为去中心化的应用程序 (Decentralized App)。如果我们把区块链理解为一个不可篡改的数据库,智能合约理解为和数据库打交道的程序,那就很容易理解 DApp 了,一个 DApp 不单单有智能合约(相当于应用的后台),比如还需要有一个友好的用户界面。 区块链可以分为:公有链、联盟链和私有链。 联盟链:本质仍然是一种...

George_Clancy的博客 1083

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

深入解析Geth的JSON-RPC接口:从私有链搭建到DApp开发实战

本文详细解析了如何使用Geth搭建以太坊私有链,并深入探讨其JSON-RPC接口在DApp开发中的实战应用。从环境准备、创世区块配置到节点启动,手把手指导构建完全可控的开发环境。文章重点剖析了eth、net、web3等核心RPC模块的使用方法,并通过一个完整的投票DApp实战案例,演示了如何通过JSON-RPC与智能合约进行交互,为开发者提供了从链搭建到应用开发的全流程指南。

butter的博客 429

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

基于以太坊区块链技术的会议报名登记Dapp开发与实现

本文对基于以太坊区块链技术的会议报名登记Dapp的设计、实现进行了研究,总结了Dapp系统的开发方法和技术路线,并在以太坊平台上实现了一个较为简单的会议报名登记Dapp系统,在实际使用中具有良好的效果。具体工作包括以下几个方面:1、确定了基于以太坊区块链技术的会议报名登记Dapp系统的开发方法和技术路线:本文比较分析了目前Dapp系统实现方法的特点,根据应用需求与实际情况,确定了基于以太坊区块链的会议报名登记Dapp系统实现的技术途径,构建了该系统的技术框架。

Qaijam的博客 1592

基于docker的以太坊集群的私有链开发环境

转载博文:https://www.jianshu.com/p/8af386ec5f9e https://www.jianshu.com/p/7994db7a2b89?from=singlemessage https://blog.youkuaiyun.com/hqzxsc2006/article/details/79526911 阅读完本文,你将可以在一台物理机上搭建起一个完整的以太坊私链...

weixin_30756499的博客 712

区块链开发(二)部署并运行第一个以太坊智能合约

        网络上不少部署智能合约的文章,但是都有一个共同的特点,就是采用命令行的方式来部署,先是建立SOLC的编译环境,然后部署Geth或者Eth节点,然后一步一步生成钱包、ABI、合约地址进行部署,对初学者来说晦涩难懂而且容易失败,本文主要介绍如何在图形化界面下一键部署和调用智能合约。对于其他区块链知识,请参考我的其他文章:http://blog.youkuaiyun.com/sportshark ...

rejames的博客 6024

以太坊之Ubuntu平台DApp私链环境的搭建

以太坊之Ubuntu平台DApp私链环境的搭建

╰つ栺尖篴夢ゞ 2305
上一篇: 使用web3.js和infura开发以太坊智能合约
下一篇: 深入浅出以太坊和智能合约
落叶无声9
博客等级 码龄12年 443粉丝 343原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值