{"content":{"title":"区块链轻钱包技术介绍","body":"## **一：Web3.js**\r\n\r\n简介：web3.js是一个库集合，允许您使用HTTP或IPC连接与本地或远程以太它节点进行交互。为了让你的Ðapp运行上以太坊，一种选择是使用web3.js library提供的web3。对象。底层实现上，它通过RPC 调用与本地节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。\r\n\r\n1、连接以太坊节点（私链、测试链、公链、infura节点）\r\n\r\n2、查询区块高度、用户账户余额、当前的gas价格、交易数据\r\n\r\n3、发送签名交易\r\n\r\n等等.....\r\n\r\n## **二：infura节点**\r\n\r\n简介：infura的目标是为全世界提供安全，稳定，容错，并且可扩展的以太坊以及IPFS节点。另外一个目标则是做以太坊社区中负责的一员，为以太坊网络的发展和稳定做贡献。Infura 提供公开的 Ethereum 主网和测试网络节点，本地安装geth的方法需要花比较多的时间和空间来同步区块，利用infura可以简单很多，infura提供公开以太坊和测试节点，可以利用infura提供的api访问以太坊以及IPFS。\r\n\r\n## **三：BIP39生成助记词**\r\n\r\n简介：\r\n\r\nBIP39标准就是为了解决助记词的需求，通过随机生成12～24个容易记住的单词，单词序列通过PBKDF2与HMAC- SHA512函数创建出随机种子作为BIP32的种子。\r\n\r\n生成步骤：\r\n\r\n1.生成一个长度为 128~256 位 (bits) 的随机序列(熵)；\r\n\r\n2.取熵哈希后的前 n 位作为校验和 (n= 熵长度/32)，就可以创造一个随机序列的校验和；\r\n\r\n3.将校验和添加在随机序列（熵）的末尾；\r\n\r\n4.将序列化分为包含11位的不同部分；\r\n\r\n5.将每个包含11位不分的值与一个已经预先定义2048个单词的字典作对应；\r\n\r\n6.生成的有顺序的单词组就是助记词。\r\n\r\n## **四：ethers.js**\r\n\r\n简介：这个库（由ethers.io制作并使用）旨在使编写基于客户端JavaScript的钱包变得更加容易，并始终将私钥保存在所有者的计算机上。\r\n\r\n1、创建钱包：生成私钥(privateKey)、助记词、KeyStore、钱包地址等。\r\n\r\n2、恢复钱包：可通过privateKey、助记词、KeyStore找回钱包。\r\n\r\n3、签名交易\r\n\r\n4、广播交易\r\n\r\n等等.....\r\n\r\n## **五：轻钱包转账交易流程**：\r\n转账：\r\n\r\n### 1、构建交易数据：\r\n\r\n● nonce：交易发送者的交易序列号\r\n\r\n● gasPrice：gas价格\r\n\r\n● gasLimit：消耗的gas上限\r\n\r\n● to：交易接收者的地址\r\n\r\n● value：要发送的以太币（以wei为单位）\r\n\r\n● data：可选的数据域\r\n\r\n### 2、对交易进行签名：\r\n\r\n● 需要使用交易发送者账号的私钥对交易进行签名，本地对交易进行验证。\r\n\r\n### 3、交易广播至区块链：\r\n\r\n● 签名后的交易会首先提交至infura以太坊节点，infura节点会首先对该笔交易进行验证，它会验证签名是否有效。\r\n\r\n验证有效后把交易广播至区块链网络之后，infura节点会将交易广播至整个网络，在广播之后会返回一个交易hash 值，你可以通过该hash值查看和追踪该交易的状态和相关信息。几乎以太坊网络上的所有节点都会收到这笔交易。\r\n\r\n### 4、矿工节点接收到交易：\r\n\r\n● 生成的交易需要被区块链网络中的矿工打包到区块，才能写入到区块链中。矿工会有一个待处理的交易列表，其中的交易是按交易的gasPrice进行排序的，交易的gasPrice越高，处理的优先级就越高。如果交易的gasPrice过低，有可能一直得不到矿工的处理，从而被忽略\r\n\r\n### 5、矿工将交易打包至区块并广播至网络\r\n\r\n● 矿工会取若干交易然后打包至一个区块中，一个区块中能够包含多少条交易是和区块的gasLimit有关的，所有交易的gasLimit总和不能超过区块的gasLimit。当矿工选择好要打包的交易之后，就开始了PoW（Proof of Work）挖矿过程，最先发现新的区块的矿工能够将交易打包至区块，并且获取到相应的奖励。\r\n\r\n其它节点同步新的区块数据\r\n\r\n由于新的区块已经产生，所有的节点都需要对区块进行同步，你的交易会随着区块的同步被同步至所有节点上。\r\n\r\n至此，一笔交易的生命周期彻底结束，它被永远的写入到了区块链中\r\n\r\n![image.png](https://img.learnblockchain.cn/attachments/2022/11/TyG01oCX636b08acbd752.png)\r\n学如逆水行舟，不进则退。心似平原跑马，易放难收。全栈工程师是指掌握多种技能，并能利用多种技能独立完成产品的人。 也叫全端工程师(同时具备前端和后台能力)，英文Full Stack engineer。【人工智能】【区块链】【系统/网络/运维】【云计算/大数据】【数据库】【移动开发】【后端开发】【游戏开发】【UI设计】【微服务】【爬虫】【Java】【Go】【C++】【PHP】【Python】【Android/IOS】【HTML/CSS】【JavaScript】【Node】。。。\r\n\r\n欢迎各位大神萌新一起专研分享各行各业技术!\r\n\r\nChain区块链开发社区：593674370"},"author":{"user":"https://learnblockchain.cn/people/12241","address":null},"history":"QmWEL6P8ut2goMTxaKDTAJxw49L3dQWUMnBPiiZ1nLWYMD","timestamp":1668486542,"version":1}