以太坊geth创建账户
1. 如何创建私链
创建创世配置文件:
首先需要创建一个“创世”json配置文件,此文件描述了创世区块的一些参数。下面就是文件中的内容:
{
"coinbase": "",
"config": {
"homesteadBlock": 5
},
"difficulty": "0x20000",
"extraData": "0x",
"gasLimit": "0x2FEFD8",
"mixhash": "",
"nonce": "0x0",
"parentHash": "000000000000000000000000",
"timestamp": "0x00",
"alloc": {
"":
{
"balance":""
}
}
}12345678910111213141516171819
将上面这段代码复制到一个文本文件里并起名为genesis.json
创世!:
为了不和主链的数据冲突,这里建议建立自己的私链数据文件夹。在我的电脑上在E盘建了一个EthDBSpace作为以太坊实验工作区,并在里面创建了一个PrivChain文件夹作为我的第一个私链的数据存放文件夹
这里为了方便管理将genesis.json放在了EthDBSpace文件夹下
打开Windows命令行
键入如下命令
geth --datadir "E:\EthDBSpace\PrivChain" init "E:\EthDBSpace\genesis.json"1
–datadir 选项用来指定我们私链的数据目录。在我的电脑上是E:\EthDBSpace\PrivChain
init 命令为创世命令,后面紧跟着我们的创世配置文件路径。
点击回车后执行结果如下
此时创世完成!
创建账户:
为了在私链上做实验,我们还需要在私链上建立自己的账户
Windows命令行键入
geth --datadir "E:\EthDBSpace\PrivChain" console1
我们由于已经创世成功所以第二次进入客户端时我们不用再次指定genesis.json文件路径,而是直接–datadir 指明私链数据路径即可。
console命令用来开启geth的命令行。
点击回车后,客户端会先经过一阵初始化。在命令提示符出现后,说明已经进入geth console
在geth命令行中键入
personal.newAccount('Your Password')1
personal.newAccount 函数用来创建账户,其中参数为账户密码
点击回车后会出现
账户创建成功后会在命令下方以绿色字符列明创建账户的地址,也即账户的公钥
我们可以先查下账户余额,在geth命令行中键入:
my=eth.accounts[0]
eth.getBalance(my)12
my=eth.accounts[0],此句的目的是将我们刚创建的账户地址赋值给my变量。这样可以简化后续账户地址输入。其中eth.accounts记录了本机上所有账户地址。由于我们第一次创建账户,所以目前电脑上只有一个账户。所以这里我们用eth.accounts[0]提取第一个账户地址。eth.getBalance函数用来获得账户余额,参数填入账户地址。这里的my变量记录的就是第一个账户的地址。
希望我的回答可以帮到您哦
2. web3.js如何新建以太坊账户
推荐提问的同学去看看这个完整的区块链新手入门的以太坊DApp开发教程,包括node.js、web3.js、solidity、geth、turffle都会涉及到,应该有帮助:
以太坊DApp入门实战教程
3. 如何创建和签署以太坊交易
交易
区块链交易的行为遵循不同的规则集
由于公共区块链分布式和无需许可的性质,任何人都可以签署交易并将其广播到网络。
根据区块链的不同,交易者将被收取一定的交易费用,交易费用取决于用户的需求而不是交易中资产的价值。
区块链交易无需任何中央机构的验证。仅需使用与其区块链相对应的数字签名算法(DSA)使用私钥对其进行签名。
一旦一笔交易被签名,广播到网络中并被挖掘到网络中成功的区块中,就无法恢复交易。
以太坊交易的数据结构:交易0.1个ETH
{
'nonce':'0x00', // 十进制:0
'gasLimit': '0x5208', //十进制: 21000
'gasPrice': '0x3b9aca00', //十进制1,000,000,000
'to': '' ,//发送地址
'value': '0x16345785d8a0000',//100000000000000000 ,10^17
'data': '0x', // 空数据的十进制表示
'chainId': 1 // 区块链网络ID
}这些数据与交易内容无关,与交易的执行方式有关,这是由于在以太坊中发送交易中,您必须定义一些其他参数来告诉矿工如何处理您的交易。交易数据结构有2个属性设计"gas": "gasPrice","gasLimit"。
"gasPrice": 单位为Gwei, 为 1/1000个eth,表示交易费用
"gasLimit": 交易允许使用的最大gas费用。
这2个值通常由钱包提供商自动填写。
除此之外还需要指定在哪个以太坊网络上执行交易(chainId): 1表示以太坊主网。
在开发时,通常会在本地以及测试网络上进行测试,通过测试网络发放的测试ETH进行交易以避免经济损失。在测试完成后再进入主网交易。
另外,如果需要提交一些其它数据,可以用"data"和"nonce"作为事务的一部分附加。
A nonce(仅使用1次的数字)是以太坊网络用于跟踪交易的数值,有助于避免网络中的双重支出以及重放攻击。
- const ethers = require('ethers')
- const signer = new ethers.Wallet('钱包地址')
- signer.signTransaction({
- 'nonce':'0x00', // 十进制:0
- 'gasLimit': '0x5208', //十进制: 21000
- 'gasPrice': '0x3b9aca00', //十进制1,000,000,000
- 'to': '' ,//发送地址
- 'value': '0x16345785d8a0000',//100000000000000000 ,10^17
- 'data': '0x', // 空数据的十进制表示
- 'chainId': 1 // 区块链网络ID
- })
- .then(console.log)
以太坊交易结构
以太坊交易签名
以太坊交易会涉及ECDSA算法,以Javascript代码为例,使用流行的ethers.js来调用ECDSA算法进行交易签名。
可以使用在线使用程序Composer将已签名的交易传递到以太坊网络。这种做法被称为”离线签名“。离线签名对于诸如状态通道之类的应用程序特别有用,这些通道是跟踪两个帐户之间余额的智能合约,并且在提交已签名的交易后就可以转移资金。脱机签名也是去中心化交易所(DEXes)中的一种常见做法。
也可以使用在线钱包通过以太坊账户创建签名验证和广播。
使用Portis,您可以签署交易以与加油站网络(GSN)进行交互。
链乔教育在线旗下学硕创新区块链技术工作站是中国教育部学校规划建设发展中心开展的“智慧学习工场2020-学硕创新工作站 ”唯一获准的“区块链技术专业”试点工作站。专业站立足为学生提供多样化成长路径,推进专业学位研究生产学研结合培养模式改革,构建应用型、复合型人才培养体系。
4. 以太坊智能合约是什么
以太坊是一个分布式的计算平台。它会生成一个名为Ether的加密货币。程序员可以在以太坊区块链上写下“智能合约”,这些以太坊智能合约会根据代码自动执行。
以太坊是什么?
以太坊经常与比特币相提并论,但情况却有所不同。比特币是一种加密货币和分布式支付网络,允许比特币在用户之间转移。
相关:什么是比特币?它是如何工作的?
以太坊项目有更大的目标。正如Ethereum网站所说,“以太坊是一个运行智能合约的分布式平台”。这些智能合约运行在“以太坊虚拟机”上,这是一个由所有运行以太网节点的设备组成的分布式计算网络。
“分布式平台”部分意味着任何人都可以建立并运行以太坊节点,就像任何人都可以运行比特币节点一样。任何想要在节点上运行“智能合约”的人都必须向Ether中的这些节点的运营商付款,这是一个与以太坊相关的加密货币。因此,运行以太网节点的人提供计算能力,并在以太网中获得支付,这与运行比特币节点的人提供哈希能力并以比特币支付的方式类似。
换句话说,虽然比特币仅仅是一个区块链和支付网络,但以太坊是一个分布式计算网络,其区块链可以用于许多其他事情。以太坊白皮书中提供了详细信息。
以太是什么?
以太网是与以太坊区块链相关的数字标记(或者说就是加密货币)。换句话说,以太是代币,以太坊是平台。但是,现在人们经常交替使用这些术语。例如,Coinbase允许你购买以太坊代币(Ethereum),即代表以太币代币。
这在技术上就是“altcoin”,这实际上意味着一个非比特币加密货币。和比特币一样,Ether也受到分布式区块链支持 - 在这种情况下是以太坊区块链。
想要在以太坊区块链上创建应用程序或以太坊 智能合约的开发人员需要以太网代币来支付节点来托管它,而基于以太坊的应用程序的用户可能需要以太网来支付这些应用程序中的服务费用。人们也可以在以太坊网络之外销售服务,并接受以太网支付,或者可以在交易所以现金形式出售以太币代币 - 就像比特币一样
5. 以太坊的钱包和账户啥关系
在以太坊,各种转账等交易操作都需要用账户来完成,在交易平台如币汇交易平台每一笔交易都需要有交易发起账户和交易接收账户。每个账户都对应一个地址,账户名则是地址的标签。用钱包来管理账户,一个钱包可以包含多个账户。当然也可以创建多个钱包。
6. geth以太坊客户端轻节点模式启动怎么与全节点启动的geth连接
一般来说,Undefined index就是自己编写过程中出现了的的确确的写法问题notice一般提示关于与执行代码没有直接关系的错误,但不要忘记,notice有时会返回一些多余的错误信息
7. 一个以太坊节点最多可以有 几个账户地址
一个以太坊节点最多可以有 几个账户地址?
答:一般只有一个账户地址,否则会出现错误的!区块链本身就是具有唯一性的,如果有多个账户地址在一个节点上,就违反了区块链的根本!