我离网络开发有点远,所以我有一个误解。
据了解,node.js代码应该在服务器端运行,而web3.js被设计为在服务器端工作(不确定),因为它使用指令"require“并连接到本地Ethereum节点。
但是在这里的https://github.com/ethereum/web3.js/tree/master/example示例中,我看到将javascript集成到应该在浏览器中执行的HTML代码中。有人能解释一下它的工作原理、与什么交互、在服务器端执行哪些代码以及在浏览器中执行哪些代码吗?
这里还有一个问题,如果我使用Mist,它会连接到本地节点。但是,如果我想在浏览器中使用web3 (而不是迷雾),我就没有可以与web3.js交互的节点。因此,问题是--我如何使用web3作为浏览器(而不是Mist)?
发布于 2017-02-08 22:03:43
Web3是为服务器端和客户端设计的.客户端必须是预处理的JS包,因为浏览器不能处理高级的JavaScript。您可以获取一个包分发。或者自己创建一个。
Web3在浏览器中运行时使用XMLHTTPRequest进行通信。如果你没有自己的节点来沟通,目前的情况是严峻的。EtherScan.io提供了基于API键的服务,这些服务还公开了一些Ethereum绑定。然而,据我所知,他们没有提供本地Web3提供程序,因此您需要使用他们的客户端而不是Web3来调用他们的特定API。
ECMAScript 2016下面是一个客户端应用程序示例项目,该项目在网页上使用Webpack和Babel和EtherScan API。。
现在有其他选择,比如在Chrome上安装元面罩扩展或者在您的站点上实现美氏蛔虫,这样用户就不需要本地节点来与区块链进行交互。
发布于 2017-02-08 22:14:14
您提出了一个可能会让新来的人感到困惑的话题。
总之,Ethereum可以通过浏览器或服务器进行访问;任何能够说出协议的内容都可以访问。Mist浏览器与人们所期望的更加紧密地集成在一起,但是如果加载了正确的需求,其他浏览器也可以工作。
为了帮助理解这一点,可以创建完全分布式的web应用程序(Dapp),该应用程序使用that Smart Contracts。浏览器将直接与智能契约对话,通常是通过Web3.jsAPI。当然,浏览器将加载API以使其成为可能,它将需要一个本地节点,因此API有一些可与之交谈的内容。
对于Mist,这是自动的,但是其他浏览器可以下载它。因此,html将包括一个加载它的<script>。作者可能会选择添加一些检测,以便在检测到Mist或检测到“其他浏览器”时,浏览器页面的操作略有不同。
对于服务器来说,与智能契约交互也是完全可以接受的。正如您所看到的,nodejs将使用require("Web3")加载它。在这种情况下,浏览器(通常)不需要块链节点或任何特殊的库,因为服务器将获取在线链接信息。与其他语言的集成是可能的,例如python,使用为此目的构建的python库。
对于一些真实的例子,etherscan.io (区块链资源管理器)使用服务器端集成。浏览器不需要库或节点,因为后端服务器提供它代表用户查找的链的信息。这就是为什么它“只是起作用”。
俄歇测试版已经分发了。要使用它,浏览器将加载一个库,用户将在本地运行一个Ethereum节点,如果没有该节点,应用程序将无法按预期工作。用户满足这一要求的最简单/最快的方法是在MetaMask插件中使用Chrome,它提供了一个“轻型客户端”界面,而不需要同步整个区块链。
为长篇大论的回答道歉。有很多部署选项,这使得很难提供一个在所有情况下都是正确的摘要。
您会发现,重要的是要意识到所描述的是哪一种场景,以便将各种“如何- to”的建议放到正确的角度。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/11991
复制相似问题