主页 > token.im钱包下载 > 去中心化网络钱包
去中心化网络钱包
以太坊去中心化网络钱包开发系列将从零开始开发一个实用的钱包。 本系列文章是理论与实践的结合。 一共有四篇文章。 这是第一篇文章,主要介绍钱包会实现什么。 功能及如何创建钱包账户,本钱包基于ethers.js开发。
去中心化网络钱包
先明确一下定义,什么是去中心化钱包,账户秘钥的管理,交易的签名都是在客户端完成的,也就是私钥相关的信息都在用户手中,钱包的开发者无法访问私钥信息。
对应的中心化钱包是私钥由中心服务器托管,比如交易所的钱包。
网页钱包,即网页钱包,是指钱包以网页的形式展示,而去中心化的网页钱包是指交易签名等操作都在浏览器中完成。
其他形式的钱包,如Android钱包或iOS钱包,其开发思路与网页版钱包相同,因此该文对于开发其他平台的钱包也很有帮助。 不过本系列文章主要以钱包功能的实现为主,并未过多考虑用户体验。
钱包功能
一个钱包通常主要包含以下功能:
这些功能将基于 ethers.js 进行开发。 与 web3.js 一样,ethers.js 也是一个用于与以太坊区块链交互的库。 不仅如此,ethers.js 还实现了 BIP 39 等相关提案,您可以在此链接阅读其文档。
这些功能主要体现在钱包的两个界面,一个界面是:账户管理,另一个界面是账户信息展示和转账。下面会一一介绍
创建钱包账户
看过上一篇了解HD钱包开发涉及的BIP32、BIP44、BIP39的同学就会知道,创建账户有两种方式:
使用随机数作为私钥创建钱包账户
即方法一,可以使用ethers.utils.randomBytes生成一个随机数,然后用这个随机数创建钱包,如代码:
var privateKey = ethers.utils.randomBytes(32);
var wallet = new ethers.Wallet(privateKey);
console.log("账号地址: " + wallet.address);
上面代码中的钱包是以太坊中的一个钱包对象。 除了代码中出现的 .address 属性外,它还有获取余额、发送交易等方法,将在后面的文章中介绍。
请注意,ethers.utils.randomBytes 生成一个字节数组。 如果要以十六进制显示以太坊钱包如何注册账号,需要转换成BigNumber代码如下:
let keyNumber = ethers.utils.bigNumberify(privateKey);
console.log(randomNumber._hex);
现在我们结合接口,完全实现账号的创建。 效果图如下,加载私钥时创建账户。
界面代码(HTML)代码如下(主要在窗体中定义一个输入框和一个按钮):
私钥:
加载私钥
对应的逻辑代码(JavaScript)如下:
```js
// 使用JQuery获取两个UI标签
var inputPrivatekey = $('#select-privatekey');
var submit = $('#select-submit-privatekey');
// 生成默认私钥
让 randomNumber = ethers.utils.bigNumberify(ethers.utils.randomBytes(32));
inputPrivatekey.val(randomNumber._hex);
// 当点击“Load Private Key”时,创建对应的钱包
提交。 点击(功能(){
var privateKey = inputPrivatekey。 值();
if (privateKey.substring(0, 2) !== '0x') { privateKey = '0x' + privateKey; }
var wallet = 新以太币。 钱包(私钥));
});
以太坊去中心化网络钱包开发系列将从零开始开发一个实用的钱包。 本系列文章是理论与实践的结合。 一共有四篇文章。 这是第一篇文章,主要介绍钱包会实现什么。 功能及如何创建钱包账户,本钱包基于ethers.js开发。
去中心化网络钱包
先明确一下定义,什么是去中心化钱包,账户秘钥的管理,交易的签名都是在客户端完成的,也就是私钥相关的信息都在用户手中,钱包的开发者无法访问私钥信息。
对应的中心化钱包是私钥由中心服务器托管,比如交易所的钱包。
网页钱包,即网页钱包,是指钱包以网页的形式展示,而去中心化的网页钱包是指交易签名等操作都在浏览器中完成。
其他形式的钱包,如Android钱包或iOS钱包,其开发思路与网页版钱包相同,因此该文对于开发其他平台的钱包也很有帮助。 不过本系列文章主要以钱包功能的实现为主,并未过多考虑用户体验。
钱包功能
一个钱包通常主要包含以下功能:
这些功能将基于 ethers.js 进行开发。 与 web3.js 一样,ethers.js 也是一个用于与以太坊区块链交互的库。 不仅如此,ethers.js 还实现了 BIP 39 等相关提案,您可以在此链接阅读其文档。
这些功能主要体现在钱包的两个界面,一个界面是:账户管理,另一个界面是账户信息展示和转账。下面会一一介绍
创建钱包账户
看过上一篇了解HD钱包开发涉及的BIP32、BIP44、BIP39的同学就会知道,创建账户有两种方式:
使用随机数作为私钥创建钱包账户
即方法一,可以使用ethers.utils.randomBytes生成一个随机数,然后用这个随机数创建钱包,如代码:
var privateKey = ethers.utils.randomBytes(32);
var wallet = new ethers.Wallet(privateKey);
console.log("账号地址: " + wallet.address);
上面代码中的钱包是以太坊中的一个钱包对象。 除了代码中出现的 .address 属性外,它还有获取余额、发送交易等方法,将在后面的文章中介绍。
请注意,ethers.utils.randomBytes 生成一个字节数组。 如果要以十六进制显示,需要转换成BigNumber代码如下:
let keyNumber = ethers.utils.bigNumberify(privateKey);
console.log(randomNumber._hex);
现在我们结合接口,完全实现账号的创建。 效果图如下,加载私钥时创建账户。
界面代码(HTML)代码如下(主要在表格中定义一个输入框和一个按钮):
私钥:
加载私钥
对应的逻辑代码(JavaScript)如下:
```js
// 使用JQuery获取两个UI标签
var inputPrivatekey = $('#select-privatekey');
var submit = $('#select-submit-privatekey');
// 生成默认私钥
让 randomNumber = ethers.utils.bigNumberify(ethers.utils.randomBytes(32));
inputPrivatekey.val(randomNumber._hex);
// 当点击“Load Private Key”时,创建对应的钱包
提交。 点击(功能(){
var privateKey = inputPrivatekey。 值();
if (privateKey.substring(0, 2) !== '0x') { privateKey = '0x' + privateKey; }
var wallet = 新以太币。 钱包(私钥));
});
以太坊去中心化网络钱包开发系列将从零开始开发一个实用的钱包。 本系列文章是理论与实践的结合。 一共有四篇文章。 这是第一篇文章,主要介绍钱包会实现什么。 功能及如何创建钱包账户,本钱包基于ethers.js开发。
去中心化网络钱包
先明确一下定义,什么是去中心化钱包,账户秘钥的管理,交易的签名都是在客户端完成的,也就是私钥相关的信息都在用户手中,钱包的开发者无法访问私钥信息。
对应的中心化钱包是私钥由中心服务器托管,比如交易所的钱包。
网页钱包,即网页钱包,是指钱包以网页的形式展示,而去中心化的网页钱包是指交易签名等操作都在浏览器中完成。
其他形式的钱包,如Android钱包或iOS钱包,其开发思路与网页版钱包相同,因此该文对于开发其他平台的钱包也很有帮助。 不过本系列文章主要以钱包功能的实现为主以太坊钱包如何注册账号,并未过多考虑用户体验。
钱包功能
一个钱包通常主要包含以下功能:
这些功能将基于 ethers.js 进行开发。 与 web3.js 一样,ethers.js 也是一个用于与以太坊区块链交互的库。 不仅如此,ethers.js 还实现了 BIP 39 等相关提案,您可以在此链接阅读其文档。
这些功能主要体现在钱包的两个界面,一个界面是:账户管理,另一个界面是账户信息展示和转账。下面会一一介绍
创建钱包账户
看过上一篇了解HD钱包开发涉及的BIP32、BIP44、BIP39的同学就会知道,创建账户有两种方式:
使用随机数作为私钥创建钱包账户
即方法一,可以使用ethers.utils.randomBytes生成一个随机数,然后用这个随机数创建钱包,如代码:
var privateKey = ethers.utils.randomBytes(32);
var wallet = new ethers.Wallet(privateKey);
console.log("账号地址: " + wallet.address);
上面代码中的钱包是以太坊中的一个钱包对象。 除了代码中出现的 .address 属性外,它还有获取余额、发送交易等方法,将在后面的文章中介绍。
请注意,ethers.utils.randomBytes 生成一个字节数组。 如果要以十六进制显示,需要转换成BigNumber代码如下:
let keyNumber = ethers.utils.bigNumberify(privateKey);
console.log(randomNumber._hex);
现在我们结合接口,完全实现账号的创建。 效果图如下,加载私钥时创建账户。
界面代码(HTML)代码如下(主要在表格中定义一个输入框和一个按钮):
私钥:
加载私钥
对应的逻辑代码(JavaScript)如下:
```js
// 使用JQuery获取两个UI标签
var inputPrivatekey = $('#select-privatekey');
var submit = $('#select-submit-privatekey');
// 生成默认私钥
让 randomNumber = ethers.utils.bigNumberify(ethers.utils.randomBytes(32));
inputPrivatekey.val(randomNumber._hex);
// 当点击“Load Private Key”时,创建对应的钱包
提交。 点击(功能(){
var privateKey = inputPrivatekey。 值();
if (privateKey.substring(0, 2) !== '0x') { privateKey = '0x' + privateKey; }
var wallet = 新以太币。 钱包(私钥));
});