以太坊ip地址以太坊网络地址
这篇文章给大家聊聊关于以太坊ip地址,以及以太坊网络地址对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
本文目录
以太坊合约地址错误是怎么回事什么是合约地址以太坊多节点私有链部署以太坊身份名怎么搞以太坊合约地址错误是怎么回事使用web3.js
web3.eth.getCode()方法返回指定地址上代码的16进制字符串,由于普通账户地址处没有代码,因此将仅返回16进制前缀0x。利用这个我们可以进行判断,例如:
varcode=web3.eth.getCode("0xbfb2e296d9cf3e593e79981235aed29ab9984c0f")
if(code==='0x')console.log('普通账户')
elseconsole.log('合约账户')
在solidity中实现
在合约内,可以使用EVM汇编代码来获取指定地址处的代码大小,显然,普通账户地址将返回0:
contractEzDemo{
functionisContract(addressaddr)returns(bool){
uintsize;
assembly{size:=extcodesize(addr)}
returnsize>0;
}
}
什么是合约地址使用Solidity程序语言,由一组代码(合约的函数)和数据(合约的状态)组成,比如在以太坊上发ERC20的币就是创建了一个合约账户。这种生成的地址就是合约地址,是没有私钥的。
以太坊的账户有两种:
一种是个人用户使用以太坊钱包生成的外部账户,由公钥和私钥组成。
另一种是合约账户。合约位于以太坊区块链上的一个特殊地址。
外部地址:
外部地址就是现在电脑连接的服务器的IP和端口,不同端口提供不同的服务,前面的那个是协议。不是说你浏览器连得那个,包含但不限于。浏览器的端口默认80。
其他的一些运行软件也会连接远程服务器获取或者提交数据。根据后面的PID号可以追踪到具体的软件。打开任务管理器,勾选PID栏,端口就是对应PID的软件连接的。
以太坊多节点私有链部署假设两台电脑A和B
要求:
1、两台电脑要在一个网络中,能ping通
2、两个节点使用相同的创世区块文件
3、禁用ipc;同时使用参数--nodiscover
4、networkid要相同,端口号可以不同
1.4搭建私有链
1.4.1创建目录和genesis.json文件
创建私有链根目录./testnet
创建数据存储目录./testnet/data0
创建创世区块配置文件./testnet/genesis.json
1.4.2初始化操作
cd./eth_test
geth--datadirdata0initgenesis.json
1.4.3启动私有节点
1.4.4创建账号
personal.newAccount()
1.4.5查看账号
eth.accounts
1.4.6查看账号余额
eth.getBalance(eth.accounts[0])
1.4.7启动&停止挖矿
启动挖矿:
miner.start(1)
其中start的参数表示挖矿使用的线程数。第一次启动挖矿会先生成挖矿所需的DAG文件,这个过程有点慢,等进度达到100%后,就会开始挖矿,此时屏幕会被挖矿信息刷屏。
停止挖矿,在console中输入:
miner.stop()
挖到一个区块会奖励5个以太币,挖矿所得的奖励会进入矿工的账户,这个账户叫做coinbase,默认情况下coinbase是本地账户中的第一个账户,可以通过miner.setEtherbase()将其他账户设置成coinbase。
1.4.8转账
目前,账户0已经挖到了3个块的奖励,账户1的余额还是0:
我们要从账户0向账户1转账,所以要先解锁账户0,才能发起交易:
发送交易,账户0->账户1:
需要输入密码123456
此时如果没有挖矿,用txpool.status命令可以看到本地交易池中有一个待确认的交易,可以使用eth.getBlock("pending",true).transactions查看当前待确认交易。
使用miner.start()命令开始挖矿:
miner.start(1);admin.sleepBlocks(1);miner.stop();
新区块挖出后,挖矿结束,查看账户1的余额,已经收到了账户0的以太币:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
用同样的genesis.json初始化操作
cd./eth_test
geth--datadirdata1initgenesis.json
启动私有节点一,修改rpcport和port
可以通过admin.addPeer()方法连接到其他节点,两个节点要要指定相同的chainID。
假设有两个节点:节点一和节点二,chainID都是1024,通过下面的步骤就可以从节点二连接到节点一。
首先要知道节点一的enode信息,在节点一的JavaScriptconsole中执行下面的命令查看enode信息:
admin.nodeInfo.enode
"enode://d465bcbd5c34da7f4b8e00cbf9dd18e7e2c38fbd6642b7435f340c7d5168947ff2b822146e1dc1b07e02f7c15d5ca09249a92f1d0caa34587c9b2743172259ee@[::]:30303"
然后在节点二的JavaScriptconsole中执行admin.addPeer(),就可以连接到节点一:
addPeer()的参数就是节点一的enode信息,注意要把enode中的[::]替换成节点一的IP地址。连接成功后,节点一就会开始同步节点二的区块,同步完成后,任意一个节点开始挖矿,另一个节点会自动同步区块,向任意一个节点发送交易,另一个节点也会收到该笔交易。
通过admin.peers可以查看连接到的其他节点信息,通过net.peerCount可以查看已连接到的节点数量。
除了上面的方法,也可以在启动节点的时候指定--bootnodes选项连接到其他节点。bootnode是一个轻量级的引导节点,方便联盟链的搭建下一节讲通过bootnode自动找到节点
参考:https://cloud.tencent.com/developer/article/1332424
以太坊身份名怎么搞ENS,全称为:EthereumNameService,即以太坊名称服务,类似于DNS将域名解析为IP地址,ENS则负责将以太坊名称解析为以太坊地址。例如,当你要给我们转账时,可以使用名称hubwiz.eth而不是地址0x4cbe58c50480…,ENS负责将这个名称解析为对应的以太坊地址。
一旦你拥有了一个ENS域名,你就可以将其指向任何资源,也可以创建子域,这也非常类似于互联网域名。
ENS是完全去中心化的系统。顶级域名.eth是由运行在以太坊区块链上的一个拍卖合约来管理的,任何人可以通过这个拍卖过程为自己预留一个以太坊域名。
以太坊域名拍卖的工作原理
以太坊顶级域名的分配是通过一个维科瑞拍卖流程实现的。整个拍卖流程分为三个步骤:
某人为其要购买的名称开启一个拍卖,并进行投标。该拍卖也允许其他人在3天内投标,投标内容是保密的,没有人可以知道你投标的价格,甚至也不知道你投标的域名是哪个。
3天投标期后,进入2天的开标期。在这个阶段,每个投保人都需要揭示其投标细节内容,否则该投标人出局。如果你的投标不是最高价,那么你的投标金将得到返回,但需要扣除不高于0.5%的手续费。
2天开标期结束后,出价最高的投标人胜出,但是他只需要支付第二高的出价。这部分资金在胜出人持有域名的整个周期中都将被锁定在合约中。胜出者需要发送一个结束交易来得到返还的资金,并得到对所投标名称的控制权。
拍卖的胜出者得到域名,在持有至少一年之后,域名持有人也可以选择释放域名,从而得到被锁定的资金。
好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 931614094@qq.com 举报,一经查实,本站将立刻删除。