以太坊web3JS
1. web3.js如何新建以太坊账户
推荐提问的同学去看看这个完整的区块链新手入门的以太坊DApp开发教程,包括node.js、web3.js、solidity、geth、turffle都会涉及到,应该有帮助:
以太坊DApp入门实战教程
2. 以太坊web3.sendRawTransaction离线签名交易
工作中需要复现短地址攻击和the重入攻击,重入攻击可以直接通过eth.sendTransaction和remix来发送交易,但是短地址攻击由于钱包和remix这些都对input做了长度检测,无法通过这些方式来复现,只能通过发离线签名交易来实现。
1.环境依赖:nodejs , keythereum , ethereumjs-common , ethereumjs-tx 。
2.进入Node控制台,获取相应账户私钥。
3.签名交易,进入Node,这里注意nonce问题,需要Nonce是实际可执行的nonce,Nonce不对会发送交易失败,关于如何获取input data网络比较多就不详述了。
4.遇到的坑,网络出来的步骤是有问题的或者过时了,当时是参考的这篇文章, https://www.freebuf.com/articles/blockchain-articles/199903.html
,在控制台通过eth.sendRawTransaction发送签名好的交易,我遇到了这个错误 ** sendRawTransaction invalid sender **
3. 区块链技术概念
区块链技术概念
区块链技术概念,现如今,区块链已经成为大部分人关注的领域,很多企业也早已深入其中研究该技术情况,但是还有人对于它不是很了解,下面我分享一篇关于区块链技术概念的相关信息。
区块链技术概念1
区块链的基本概念和工作原理
1、基本概念
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法。
区块链Blockchain、是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术。区块链是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性防伪、和生成下一个区块。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
2、工作原理
区块链系统由数据层、网络层、共识层、激励层、合约层和应用层组成。 其中,数据层封装了底层数据区块以及相关的数据加密和时间戳等基础数据和基本算法;网络层则包括分布式组网机制、数据传播机制和数据验证机制等;共识层主要封装网络节点的各类共识算法;激励层将经济因素集成到区块链技术体系中来,主要包括经济激励的发行机制和分配机制等;合约层主要封装各类脚本、算法和智能合约,是区块链可编程特性的基础;应用层则封装了区块链的各种应用场景和案例。该模型中,基于时间戳的链式区块结构、分布式节点的共识机制、基于共识算力的经济激励和灵活可编程的智能合约是区块链技术最具代表性的创新点。
区块链主要解决的交易的信任和安全问题,因此它针对这个问题提出了四个技术创新:
1、分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。
跟传统的分布式存储有所不同,区块链的分布式存储的独特性主要体现在两个方面:一是区块链每个节点都按照块链式结构存储完整的数据,传统分布式存储一般是将数据按照一定的规则分成多份进行存储。二是区块链每个节点存储都是独立的、地位等同的,依靠共识机制保证存储的一致性,而传统分布式存储一般是通过中心节点往其他备份节点同步数据。 [8]
没有任何一个节点可以单独记录账本数据,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。也由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
2、非对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
3、共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。
区块链的共识机制具备“少数服从多数”以及“人人平等”的特点,其中“少数服从多数”并不完全指节点个数,也可以是计算能力、股权数或者其他的计算机可以比较的特征量。“人人平等”是当节点满足条件时,所有节点都有权优先提出共识结果、直接被其他节点认同后并最后有可能成为最终共识结果。以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能.
4、智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息包括医疗信息和风险发生的信息、都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔.
3、其它
互联网交换的是信息,区块链交换的是价值。人类历史和互联网历史可以用八个字理解:分久必合合久必分,到了分久必合的时代,网络信息全部散在互联网上面,大家要挖掘信息非常不容易,这时会出现像谷歌和脸 书等的平台,它做的唯一的事情就是把我们所有的信息重新组合了一下。互联网时代垄断巨头们重组的就是信息,并不是产生自己的信息,产生的信息完全是我们个人。一旦信息重组,就会出现一个新的垄断巨人,所以就到了分久必合的时代。现在由于区块链技术产生又到了合久必分时代,又是新的多中心化,新的多中心化之后赋能产生新的价值,这些数据会在我们自己的手上,个人数据产生价值是归自己所有,这是这个时代最最激动人心的时代。
区块链的价值有哪些?低成本建立信任的机制,确立数权,解决数据的.产权。
目前区块链技术不断发展,包括现在的单链向多链发展,而且技术能够在进一步扩展,我想未来还是可能会出现,特别是在交易等方面出现颠覆性的,特别是对现有产业的很多颠覆性的场景。
区块链的本质是在不可信的网络建立可信的信息交换。
一带一路+一链。区块链更大的不是制造信任,而是让信任产生无损的传递,整个降低社会的摩擦成本,从而提高整个效益。
现在区块链本身还是初始阶段,所以包括区块链的信息传递、加密,这个过程中出现量子加密和其他加密,实际上对区块链本身所采用的加密算法攻击现象也时有发生。包括区块链也是作为一种资产的认定,数字资产的一个认定,但是现在我们很多都是用密码算法,或者是作为我们来解密的钥匙,但是如果密码忘记了,很可能你现在的资产就丢掉了,你不能够在得到你原来的这些资产,所以在资产管理,包括信息传递和一些安全这些方面,应该说都还是存在着一些隐患。当然那么从技术角度,现在我们区块链本身处理的速度,或者说本身的扩展性,因为从工作机理的角度来看,是要把整个账本要复制给所有的参与人员,所以在区块链本身的运作效率和扩展性方面还是比较受限的。这些我们觉得都还是需要进一步在技术方面有进一步的发展。
区块链平台这些底层技术,又形成包括区块链钱包、区块链浏览器、节点竞选、矿机、矿池、开发组件、开发模块、技术社区及项目社群等一系列的生态系统,这些生态系统的完善程度直接决定着区块链底层平台的使用效率和效果。
4、蒙代尔的不可能三角
去中心化、高效、安全,不可能实现三者全部同时达到极致。
区块链技术概念2
区块链的本质是一种分布式记账技术,与之相对的是中心式记账技术,中心式记账技术在我们目前的生活中广泛存在。区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。
区块链Blockchain、,是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性防伪、和生成下一个区块。
狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构, 并以密码学方式保证的不可篡改和不可伪造的分布式账本。
广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
区块链技术通俗的理解就是:把“物”的前、后、左、右区块用一种技术连接成一个链条,但每个区块的原始数据不可篡改,是一种物联网范畴的、可以让参与者信任的“各个模块链动”的技术。区块链技术的应用,离不开互联道网,也离不开物联网,是建立在二者融合互动基础上的、但又让参与者各自保持独回立的去中心化、、并共同拥有这套价值链共建共享、的技术。
区块链的特征:去中心化、开放性、自治性、信息不可篡改,匿名性。
区块链是一个能够传递价值的网络,对可以传递价值的网络的需求是推动区块链技术产生的重要原因。在对于保护带有所有权或者其他价值的信息需求的推动下,区块链出现了。区块链通过公私钥密码学、分布式存储等技术手段,一方面保证了带有价值的信息的高效传递,另一方面保证了这些信息在传递的过程中不会被轻易的复制篡改。
从区块链诞生的必然性来理解区块链的内涵,区块链是解决了中心化记账缺点、解决了分布式一致性问题的分布式记账技术,同时也是连接互联网升级为保证带有价值的信息安全高效传递的价值网络。
区块链技术概念3
区块链: 区块链就像是一个全球唯一的帐簿,或者说是数据库,记录了网络中所有交易历史。
以太坊虚拟机(EVM): 它让你能在以太坊上写出更强大的程序比特币上也可以写脚本程序、。它有时也用来指以太坊区块链,负责执行智能合约以及一切。
节点:你可以运行节点,通过它读写以太坊区块链,也即使用以太坊虚拟机。完全节点需要下载整个区块链。轻节点仍在开发中。
矿工:挖矿,也就是处理区块链上的区块的节点。这个网页可以看到当前活跃的一部分以太坊矿工:stats.ethdev.com。
工作量证明:矿工们总是在竞争解决一些数学问题。第一个解出答案的(算出下一个区块)将获得以太币作为奖励。然后所有节点都更新自己的区块链。所有想要算出下一个区块的矿工都有与其他节点保持同步,并且维护同一个区块链的动力,因此整个网络总是能达成共识。(注意:以太坊正计划转向没有矿工的权益证明系统(POS),不过那不在本文讨论范围之内。)
以太币:缩写ETH。一种你可以购买和使用的真正的数字货币。这里是可以交易以太币的其中一家交易所的走势图。在写这篇文章的时候,1个以太币价值65美分。
Gas:在以太坊上执行程序以及保存数据都要消耗一定量的以太币,Gas是以太币转换而成。这个机制用来保证效率。
DApp: 以太坊社区把基于智能合约的应用称为去中心化的应用程序(Decentralized App)。DApp的目标是(或者应该是)让你的智能合约有一个友好的界面,外加一些额外的东西,例如IPFS可以存储和读取数据的去中心化网络,不是出自以太坊团队但有类似的精神)。DApp可以跑在一台能与以太坊节点交互的中心化服务器上,也可以跑在任意一个以太坊平等节点上。(花一分钟思考一下:与一般的网站不同,DApp不能跑在普通的服务器上。他们需要提交交易到区块链并且从区块链而不是中心化数据库读取重要数据。相对于典型的用户登录系统,用户有可能被表示成一个钱包地址而其它用户数据保存在本地。许多事情都会与目前的web应用有不同架构。)
以太坊客户端,智能合约语言
编写和部署智能合约并不要求你运行一个以太坊节点。下面有列出基于浏览器的IDE和API。但如果是为了学习的话,还是应该运行一个以太坊节点,以便理解其中的基本组件,何况运行节点也不难。
运行以太坊节点可用的客户端
以太坊有许多不同语言的客户端实现即多种与以太坊网络交互的方法、,包括C++, Go, Python, Java, Haskell等等。为什么需要这么多实现?不同的实现能满足不同的需求例如Haskell实现的目标是可以被数学验证、,能使以太坊更加安全,能丰富整个生态系统。
在写作本文时,我使用的是Go语言实现的客户端geth (go-ethereum),其他时候还会使用一个叫testrpc的工具, 它使用了Python客户端pyethereum。后面的例子会用到这些工具。
关于挖矿:挖矿很有趣,有点像精心照料你的室内盆栽,同时又是一种了解整个系统的方法。虽然以太币现在的价格可能连电费都补不齐,但以后谁知道呢。人们正在创造许多酷酷的DApp, 可能会让以太坊越来越流行。
交互式控制台:客户端运行起来后,你就可以同步区块链,建立钱包,收发以太币了。使用geth的一种方式是通过Javascript控制台。此外还可以使用类似cURL的命令通过JSON RPC来与客户端交互。本文的目标是带大家过一边DApp开发的流程,因此这块就不多说了。但是我们应该记住这些命令行工具是调试,配置节点,以及使用钱包的利器。
在测试网络运行节点: 如果你在正式网络运行geth客户端,下载整个区块链与网络同步会需要相当时间。你可以通过比较节点日志中打印的最后一个块号和stats.ethdev.com上列出的最新块来确定是否已经同步。) 另一个问题是在正式网络上跑智能合约需要实实在在的以太币。在测试网络上运行节点的话就没有这个问题。此时也不需要同步整个区块链,创建一个自己的私有链就勾了,对于开发来说更省时间。
Testrpc:用geth可以创建一个测试网络,另一种更快的创建测试网络的方法是使用testrpc. Testrpc可以在启动时帮你创建一堆存有资金的测试账户。它的运行速度也更快因此更适合开发和测试。你可以从testrpc起步,然后随着合约慢慢成型,转移到geth创建的测试网络上 - 启动方法很简单,只需要指定一个networkid:geth --networkid "12345"。这里是testrpc的代码仓库,下文我们还会再讲到它。
接下来我们来谈谈可用的编程语言,之后就可以开始真正的编程了。写智能合约用的编程语言用Solidity就好。
要写智能合约有好几种语言可选:有点类似Javascript的Solidity, 文件扩展名是.sol. 和Python接近的Serpent, 文件名以.se结尾。还有类似Lisp的LLL。Serpent曾经流行过一段时间,但现在最流行而且最稳定的要算是Solidity了,因此用Solidity就好。听说你喜欢Python? 用Solidity。
solc编译器: 用Solidity写好智能合约之后,需要用solc来编译。它是一个来自C++客户端实现的组件又一次,不同的实现产生互补、,这里是安装方法。如果你不想安装solc也可以直接使用基于浏览器的编译器,例如Solidity real-time compiler或者Cosmo。后文有关编程的部分会假设你安装了solc。
web3.js API. 当Solidity合约编译好并且发送到网络上之后,你可以使用以太坊的web3.js JavaScript API来调用它,构建能与之交互的web应用。
4. 以太坊如何使用web3.js或者rpc接口获取交易数据交易时间与确认数
如果要查询主网上的交易记录,可以使用etherscan。但是,如果是你自己搭建的私链,应该如何查询交易记录呢?
答案是你需要自己监听链上的日志,存到数据库里,然后在这个数据库中查询。例如:
varaddr=""
varfilter=web3.eth.filter({fromBlock:0,toBlock:'latest',address:addr});
filter.get(function(err,transactions){
transactions.forEach(function(tx){
vartxInfo=web3.eth.getTransaction(tx.transactionHash);
//这时可以将交易信息txInfo存入数据库
});
});
web3.eth.filter()用来监听链上的日志,web3.eth.getTransaction()用来提取指定交易的信息,一旦获得交易信息,就可以存入数据库供查询用了。
推荐一个实战入门,你可以看看:以太坊教程
5. 什么是Web3
中心化帮助数十亿人上网,并创建了稳定、强大的基础设施。与此同时,少数中心化实体在大片互联网上占有一席之地,单方面决定应该允许什么和不应该允许什么。
Web3 是解决这个难题的答案。Web3 不是由大型科技公司垄断的互联网,而是去中心化,并由其用户构建、运营和拥有。Web3 将权力掌握在个人而非公司手中。在讨论 Web3 之前,让我们先来看看我们是如何走到这一步的。
大多数人认为互联网是现代生活的持续支柱——它是被发明出来的,从那以后就一直存在。然而,我们大多数人今天所知道的互联网与最初想象的完全不同。为了更好地理解这一点,将互联网的短暂历史分成松散的时期是有帮助的——web 1.0 和 web 2.0。
1989 年,在日内瓦的 CERN,Tim Berners-Lee 正忙于开发后来成为互联网的协议。他的想法?创建开放的、分散的协议,允许从地球上的任何地方共享信息。
互联网的第一次诞生,现在被称为“Web 1.0”,大约发生在 1990 年到 2004 年之间。Web 1.0 上的互联网主要是公司拥有的静态网站,用户之间的互动几乎为零——个人很少生产内容——导致它被称为只读网络。
随着社交媒体平台的出现,Web 2.0 时期开始于 2004 年。Web 不再是只读的,而是演变为可读写的。公司不再向用户提供内容,而是开始提供平台来共享用户生成的内容并参与用户与用户的交互。随着越来越多的人上网,少数顶级公司开始控制网络上产生的不成比例的流量和价值。Web 2.0 也催生了广告驱动的收入模式。虽然用户可以创建内容,但他们并不拥有它或从它的货币化中受益。
“Web 3.0”的前提是以太坊联合创始人 Gavin Wood 在 2014 年以太坊推出后不久创造的。 Gavin 提出了一个解决许多早期加密货币采用者认为的问题的解决方案:互联网需要太多的信任。也就是说,今天人们知道和使用的大多数互联网都依赖于信任少数私营公司来为公众的最大利益行事。
Web3 已成为一个包罗万象的术语,代表了一个新的、更好的互联网的愿景。Web3 的核心是使用区块链、加密货币和 NFT 以所有权的形式将权力交还给用户。 2021 年 Twitter 上的一篇帖子 说得最好:Web1 是只读的,Web2 是读/写的,Web3 将是读/写/拥有的。
尽管提供一个严格的定义 Web3 是什么具有挑战性,但有一些核心原则指导它的创建。
尽管 Web3 的杀手级功能不是孤立的,也不适合整齐的类别,但为简单起见,我们尝试将它们分开以使它们更易于理解。
Web3 以前所未有的方式让您拥有数字资产的所有权。例如,假设您正在玩 web2 游戏。如果您购买游戏内物品,它会直接与您的帐户绑定。如果游戏创建者删除您的帐户,您将丢失这些物品。或者,如果您停止玩游戏,您将失去投资于游戏内物品的价值。
Web3 允许通过 非同质化的代币 (NFT) 直接拥有所有权。其他人甚至游戏的创造者,都没有权力剥夺你的所有权。而且,如果您停止玩游戏,您可以在公开市场上出售或交易游戏内你的物品并收回它们的价值。
平台和内容创作者之间的权力动态是严重失衡的。
OnlyFans 是一个用户生成的成人内容网站,拥有超过 100 万内容创作者,其中许多人使用该平台作为他们的主要收入来源。2021 年 8 月,OnlyFans 宣布了禁止色情内容的决定。该公告在平台上的创作者中引发了愤怒,他们认为他们帮助创建了一个平台现在却被这个平台被剥夺了收入。在强烈反对之后,这个决定很快被推翻。尽管创作者赢得了这场战斗,但它突显了 Web 2.0 创作者的一个问题:如果你离开一个平台,你就会失去声誉并追随你的人。
在 Web3 上,您的数据位于区块链上。当您决定离开一个平台时,您可以将您的声誉带走,将其插入另一个更符合您的价值观的接口。
Web 2.0 要求内容创建者信任平台而不是更改规则,但抵抗审查是 Web3 平台的原生特性。
传统上,您将为您使用的每个平台创建一个帐户。例如,您可能有一个 Twitter 帐户、一个 YouTube 帐户和一个 Reddit 帐户。想要更改您的显示名称或个人资料图片?您必须在每个帐户中执行此操作。在某些情况下,您可以使用社交登录,但这会带来一个熟悉的问题——审查。只需单击一下,这些平台就可以将您锁定在整个在线生活之外。更糟糕的是,许多平台要求您信任他们的个人身份信息才能创建帐户。
Web3 通过允许您使用以太坊地址和 ENS 配置文件控制您的数字身份来解决这些问题。使用以太坊地址可以跨平台提供安全、抵抗审查和匿名的单一登录。
Web2 的支付基础设施依赖于银行和支付处理程序,不包括没有银行账户的人或碰巧住在错误国家境内的人。Web3 使用 ETH 等代币在浏览器中直接汇款,不需要受信任的第三方。
更多关于 ETH
尽管当前形式的 Web3 有许多好处,但生态系统仍然必须解决许多限制才能使其蓬勃发展。
任何人都可以零成本使用重要的 Web3 功能,例如使用以太坊登录。但是,交易的相对成本仍然让许多人望而却步。由于高昂的交易费用,Web3 不太可能在不太富裕的发展中国家使用。在以太坊上,这些挑战正在通过 网络升级 和 第 2 层扩展解决方案来解决 。该技术已经准备就绪,但我们需要在第 2 层采用更高级别的技术,以使每个人都可以访问 Web3。
目前使用 Web3 的技术门槛太高了。用户必须理解安全问题、理解复杂的技术文档并浏览不直观的用户界面。 尤其是钱包提供商 正在努力解决这个问题,但在 Web3 被大规模采用之前还需要更多的进展。
Web3 引入了新的范式,这些范式需要学习与 Web2.0 中使用的不同的心智模型。随着 Web1.0 在 1990 年代后期越来越流行,类似的教育活动也发生了。万维网的支持者使用一系列教育技术来教育公众,从简单的比喻(信息高速公路、浏览器、网上冲浪)到 电视广播 。Web3 并不难,但它是不同的。让 Web2 用户了解这些 Web3 范式的教育计划对其成功至关重要。
Ethereum.org 通过我们的 翻译计划 为 Web3 教育做出贡献,旨在将重要的以太坊内容翻译成尽可能多的语言。
Web3 生态系统很年轻并且发展迅速。因此,它目前主要依赖于中心化基础设施(GitHub、Twitter、Discord 等)。许多 Web3 公司都在争先恐后地填补这些空白,但构建高质量、可靠的基础架构需要时间。
Web3 是一个年轻且不断发展的生态系统。Gavin Wood 在 2014 年创造了这个词,但其中许多想法直到最近才成为现实。仅在去年,人们对加密货币的兴趣就大幅增加,对第 2 层扩展解决方案的改进,对新治理形式的大规模实验以及数字身份的革命。
我们才刚刚开始使用 Web3 创建更好的互联网,但随着我们继续改进支持它的基础设施,互联网的未来看起来一片光明。
6. 使用Web3J与第三方合约交互——批量转账
之前使用NodeJs与智能合约交互,都是访问的自己部署的合约。最近要对线上第三方合约进行转账操作,人数比较多,一笔笔操作起来手指都点断了还容易出错。既然代币Token都遵守ERC20协议,肯定有统一的Transfer(转账)方法供客户端调用,那么编写程序实现自动转账应该可以实现,去查了相关资料发现web3j是不错的选择。
轻量级客户端与以太坊交互的Java库。
既然是调用第三方合约那么肯定需要知道合约地址,合约地址定义了到哪里去访问合约;
ABI(Application Binary Interface): 应用程序二进制接口,定义了智能合约提供的方法功能
若是无法获取到ABI接口,也可以使用solc编译生产bin和abi文件。
(生产代理类时可以指定包路径和类名)
这样一来,便可以使用程序完成批量转账操作。
后来研究发现,使用NodeJs直接调用Web3也可以实现对应功能,不过还是对Java更熟悉一些,就采用了Java的方式。
7. Web3的provider的正确使用
我们在进行测试的时候,如果使用ganache,那么就是会用ganache提供的provider
我们进行合约部署的时候,可以使用infura提供的provider
但是注意上面的mnemonic是12个账户助记词,这12个词是合约部署者的
在和以太坊的交互中,面对的成千上百的用户,如果用户都使用部署者的账户,大量的操作消耗gas都是部署者的账户中的钱
因此在交互中,这里应该换为用户使用的钱包的provider,例如metamask的provider
我们只要装了metamask插件,那么浏览器中就被注入了web3
没装当然就是没有的
上面的情况打个比方:
我们给用户提供了高版本的iphone,但是没有也不能提供电话卡,不能打电话
metamask提供了低版本的诺基亚,有电话卡,能打电话
那么我们就需要用户使用我们的iphone,并且把诺基亚的卡插进来
我们使用新的模块web3.js组合web3
导出后我们在其他的模块中使用的就是这个组装web3
注意,window.web3.currentProvider能找到一定是要装了metamask或者类似插件
8. Solidity知识点集 — Keccak256与事件(二)
Keccak256生成伪随机数
类型转换
事件
事件 是合约和区块链通讯的一种机制。你的前端应用“监听”某些事件,并做出反应。
你的 app 前端可以监听这个事件。JavaScript 实现如下:
Web3.js
以太坊有一个 JavaScript 库,名为Web3.js。底层实现上,它通过RPC 调用与本地节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。
后面会继续讲到。
9. 批量创建钱包为什么需要web3js
可以加密货币。web3js是以太坊提供的一个Javascript库,批量创建钱包用web3js的原因是可以加密货币。web3js可以查看网络状态,查看本地账户、查看交易和区块、发送交易、部署智能合约、调用智能合约等。