主页 > imtoken官网下载1.0版本 > 智能合约:简介、geth、以太坊钱包

智能合约:简介、geth、以太坊钱包

imtoken官网下载1.0版本 2023-10-13 05:11:38

从看学论坛上换了一份《智能合约安全分析与审计指南》以太坊poa出块时间怎么设置,看了一些智能合约相关的内容,因为之前对区块链的理解只是世界上有一种东西叫比特币。 因此,理解这些概念还是有难度的。

了解什么是区块链:

了解以太坊和智能合约等:

Geth操作及相关说明

如果安装了geth,直接下载安装即可

下面是cookie云盘的链接:

安装完成后在文件目录下打开cmd运行

连接到网络

使用这个命令主网

geth --datadir ./ethdev/chain --networkid 1

打造私链

删除之前生成的chaindata,然后在ethdev目录下新建一个genesis.json

{"config":{    "chainId":2,    "homesteadBlock":0,    "eip150Block":0,    "eip155Block":0,    "eip158Block":0    },    "coinbase":"0x0000000000000000000000000000000000000000",    "difficulty":"0x40000",    "extraDate":"",    "gasLimit":"0xffffffff",    "nonce":"0x0000000000000042",    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",    "timestamp":"0x00",    "alloc":{}}

然后使用

geth init ./ethdev/genesis.json --datadir ./ethdev/chain

生成创世块,网络已经部署以太坊poa出块时间怎么设置,但是还没有块和账户

运行命令:

geth --datadir ./ethdev/chain/00 --nodiscover console 2>>./ethdev/chain/00/eth_output.log

以太坊出块速度是多少_以太坊poa出块时间怎么设置_以太坊联盟和以太坊的关系

实际上,上述命令的完整形式如下:

geth --identity chainpi --rpc --rpcport 8080 --rpccorsdomain "*" --datadir ./ethdev/chain/00/ --port 30303 --nodiscover --rpcapi "db,eth,net,web3" --networkid 555 console 2>>./ethdev/chain/00/eth_output.log --allow-insecure-unlock

参数介绍:

--identity    给以太坊节点设置身份--rpc         启动 RPC(Remote Procedure Call,远程过程调用)通信,进行智能合约的部署和调试。不同的 RPC 设置,可以供 API 及远程访问他们的人使用--datadir     与初始化测试使用同一目录--port        网络监听端口,设置端口是为了防止在多条链之间发生端口冲突--nodiscover  表示该节点对外不可见--networkid   是一个数字,表示设置当前区块链的网络 ID,以区分不同的网络,第一次可以随意设置,但之后如果要链接同一条链,需要去取对应的 networkid(主网 ID 为 1,主网的测试网络 ID 为 2)--rpcapi "db,eth,net,web3"   这条命令主要是描述哪些接口可以通过 RPC 来访问,在默认情况下,geth 开启的是 web3 接口--dev       启用开发者网络(模式)开发者模式会使用 POA 共识,默认预分配一个开发者账户,并会自动开启挖矿--allow-insecure-unlock   是新版的 geth 禁用了 HTTP 通道解锁账户,加上这个东西就可以 unlock 了

控制台是一个交互式的javascript执行环境,内置了运行以太坊的JavaScript对象

普通操作

eth.accounts 查看现有账户

personal.newAccount() 创建一个账号,括号内可以填写密码。 首次创建账户的用户名默认为coinbase

账户数据存放在block目录下的keystore文件夹中

eth.coinbase(它似乎返回哈希)

eth.getBalance(eth.coinbase) 查看coinbase账户余额

miner.start()开始挖矿,挖出的以太币归默认的eth.accounts[0]所有,也就是coinbase。 在测试网络中,将genesis.json中的难度值设置为较小的值,将更容易挖以太币

eth.blockNumber 查看当前区块号(一开始显示为0,后面会出现)

miner.stop() 停止挖矿

eth.getBalance(eth.coinbase) 查看coinbase当前余额

web3.fromWei(eth.getBalance(eth.coinbase), "ether") 以以太的形式显示余额

u0=eth.coinbase 重命名账户

以太坊联盟和以太坊的关系_以太坊poa出块时间怎么设置_以太坊出块速度是多少

接下来,让我们创建几个帐户并尝试转账

个人的。 新账户()

个人的。 新账户()

u1=eth.accounts[1]

u2=eth.accounts[2]

开始交易

从u0转100个ETH到u1,报错,因为coinbase没有解锁

eth.sendTransaction({from:u0,to:u1,value:web3.toWei(100,'ether')})

personal.unlockAccount(u0,'123456')

unlock u0后接123456为密码,解锁后交易成功

再转100给u2

eth.sendTransaction({from:u0,to:u2,value:web3.toWei(100,'ether')})

交易完成后没有变化,使用txpool.status查看

Pending为2,表示有两笔交易已经提交但未处理,因为刚才的交易还没有写入区块,写入区块的方式是挖矿⛏

我们可以通过交易的哈希值来查看之前的一笔交易

查看对应的区块eth.getBlock(209)

帐户和密钥

以太坊poa出块时间怎么设置_以太坊出块速度是多少_以太坊联盟和以太坊的关系

账户在以太坊中扮演着重要的角色。 以太坊中有两种账户,即外部账户和合约账户。这里,外部账户简称账户,合约账户简称合约。 外部账户和合约账户都是账户的一般概念,这些账户实际上是状态对象。

外部账户的余额是外部账户的状态对象; 合约账户的状态,除了余额,还有一个存储合约。所有账户的状态就是以太坊网络的状态,以太坊网络的状态随着每次区块更新而变化

限制以太坊网络只有外部账户并且这些账户只能进行交易,相当于创建了一个只能交易以太币的“山寨币”

账户是用户的外部身份。在使用公钥签署交易后,以太坊虚拟机可以安全地验证交易的发起者

每个账户对应一对密钥,私钥和公钥

账户和地址是一一对应的,账户索引来自key的最后20字节

每个私钥-地址被编码成一个密钥文件,密钥文件的大小是一个JSON格式的文本文件

密钥文件的一个重要部分,即账户的私钥,通过创建账户时输入的密码进行加密保护

密钥文件存放在以太坊客户端的keystore目录下,需要定期备份

搭建私有链多节点

net 查看网络状态

网。 然后tab键有命令完成提示

net.listening 检查网络是否正在监听

net.peerCount 查看连接的节点数

管理员查看网络

行政。 检查管理员可以执行的操作

书不详,差评,参考:

以太坊poa出块时间怎么设置_以太坊联盟和以太坊的关系_以太坊出块速度是多少

新开一个节点,这里我重新设置一下,把这些节点移到链上

geth init ./ethdev/genesis.json --datadir ./ethdev/chain/01

进入另一个控制台:

geth --identity chainpi --rpc --rpcport 8081 --rpccorsdomain "*" --datadir ./ethdev/chain/01 --port 30304 --nodiscover --rpcapi "db,eth,net,web3" --networkid 555 console 2>>./ethdev/chain/01/eth_output.log --allow-insecure-unlock --ipcdisable

win好像没有加下面的参数--ipcdisable 打不开geth

进入另一个节点1的控制台(之前用过的控制台),运行如下命令连接到节点2

admin.addPeer("enode://928acba0da90d952b3802f7ddab2a99d29164934c407b56f8c47ed52d44e843314457a40e9ff1dd5d2da632b5be6f8d346fddac35b9f2755650a17ed78a2e139@127.0.0.1:30304")

连接成功后,节点2会开始同步节点1的区块。同步完成后,只要任何一个节点开始挖矿,另一个节点就会自动同步区块,向任何一个节点发送一笔交易,另一个节点节点也会收到交易信息。 书上说了这里就不展示了

使用 net.peerCount 查看连接的节点数

当然,除了在控制台添加命令外,还可以在--datadir指定的目录下添加static-nodes.json文件,这样各个节点就可以联系上了,如下:

{    "enode://xxxxxxxx"     //boot node 的地址}

抄书

以太坊钱包

以太坊钱包软件到这里下载:

新版打不开,老版可以,cookie云盘:

下载下来直接解压:先在cmd中启动node,然后打开这个

第一次运行需要一段时间。 去吃饭了,不知道要等多久。 弹出下载框,关闭即可。

以太坊联盟和以太坊的关系_以太坊poa出块时间怎么设置_以太坊出块速度是多少

就是这样

发生这种情况时,单击运行

主界面!

实施多重签名

多重签名是指交易需要多人同意才能生效。好处是当要从账户中提取大量以太币时,需要多个账户进行身份验证才能成功提取,所以创建一个多重签名钱包至少需要两个账户

另外,如果要向主账户(创建多签钱包的账户)添加不少于0.02 Ether,这是创建多签钱包合约的交易手续费,至少1 Ether是必需的,因为当前的Mist需要足够的gas来保证多签合约能够正确执行交易,所以一开始主账户中至少要有1.02个以太坊

只需订购一个

选择右边的复制地址

保存两者的地址:

0xE2fA80E6D74b9f63157EcD131Eb11F8130D0416D

0x27EdE661c026b64DdEF9d9D965d710af40afaea0

点击钱包合约

设置它

然后创建

然后可以自己设置最高交易手续费,输入密码即可

只有在挖矿状态下才能将合约打包到区块中

使用我们自己的账户转一个账户到我们刚刚创建的钱包

如果转移的金币不够,会有提示

如果正常,则正常传输