欢迎访问wabc.cc — 源码交易 · 软件定制 · 建站服务一站式平台
全部分类
首页 - 首页 - 解决方案 - 推荐文章 - 区块链虚拟货币行情大饼企稳,韩国一IEO被叫停

区块链虚拟货币行情大饼企稳,韩国一IEO被叫停

分类:推荐文章 · 发布:2025-12-20 · 浏览:2

 执行truffle compile命令,将/contract目录下的智能合约文件编译成JSON文件,这个JSON文件中包含了智能合约ABI和其他一些数据;

166---2123---9506微

 企鹅 29--28--03--33--49

  执行truffle migrate命令,将合约部署到区块链上。

  在合约编写完后,就可以发布了,通常智能合约会发布到以下路径:

  安装节点工具Ganache:这是一个本地私有链,可用于本地开发。

  Rinkeby、Ropsten等测试网络:相当于一个私有测试环境,且免费。

  以太坊主网Mainnet:这才是真正能赚钱的以太坊网络!

  在Truffle中的truffle-config.js配置文件中,我们可以设置不同的网络环境。然后使用truffle migrate命令将智能合约部署到Ropsten测试网络中。

  如何与智能合约进行交互?

  在与智能合约进行交互之前,我们还需要将web3.js库添加到脚本中。不过,如果你用的是react类库,则可以和Drizzle数据库搭配使用。

  在于区块链进行交互时,还得需要一个节点。区块链上的所有数据都存储在每个单独的节点中,因此,我们只需要和其中一个节点进行交互即可。

  在这里,我们用web3.js库与区块链节点进行交互,并执行

  web3.myPokemonContract.getPokemon(1) 

  等操作,就可以为我们提供交互所需要的一切。

  但在Rinkeby、 Ropsten测试环境中会略有不同,因为你并不属于区块链网络的一部分。如果没有网络节点,我们可以使用以下两种方法创建节点:

  使用gETH创建节点,并将其连接到测试网络上(Rinkeby,Ropsten等)。然后需要对其进行安装、配置并允许可以从外部对其访问、安全管理等。

  使用fura这样的laaS服务,该服务能维护自己的节点,并为我们提供所需的服务,比如一个便于与区块链进行交互的API。

  创建Web应用程序

  有了智能合约和区块链,你就可以进行“读”和“写”的操作了。

  读:通过 ID得到口袋精灵,得到自己拥有口袋精灵的数量等。

  写:创建一个口袋精灵→把新创建的口袋精灵写入智能合约→将其转移到另一个地址→在智能合约上写入新的拥有者等。

  在这个案例中,我们调用的是getPokemon ()和buy ()函数。

  到这里,我们总结一下,这个架构的基本思路就是:在的口袋精灵市场中,有一个能够从智能合约中收集口袋精灵信息的页面,并向用户展示,引导用户买入宠物精灵。

  

  还没有大功告成

  操作到了这一步,还没有大功告成,还有一些你必须清楚的情况。

  我们知道区块链有很多优点,比如去中心化、抗审查等,但是同时也存在缺陷——运行速度超级慢!

  仅仅是获取口袋精灵的详细信息,就可能会花费几秒钟的时间。对于区块链来说,良好的用户体验可能真的是一大挑战,因为我们会浪费大把的时间在页面加载上。

  此外,在区块链中「读」数据是免费的,而「写」数据,更新智能合约则需要付费。

  在读数据时,我们可以使用web3.js和getPokemon()函数读取区块链,但这并不包含任何其他额外的更新。

  而“写”数据则不然。根据区块链更新过程所需要的计算力,我们也需要支付一定的费用。此外,在购买项目的时候,需要使用以太币支付。但是,我们并不是非得将信用卡绑定在以太坊钱包中,而是可以使用MetaMask钱包进行支付。

  不过,这又引起了另一个问题,即以太币是如何支付到智能合约中的?

  MetaMask是一款基于浏览器插件的以太坊轻钱包。在购买宠物精灵的时候,我们可以使用web3.js要求MetaMask从自己的以太坊钱包中发送0.0004以太币,然后,MetaMask就会请求用户支付,支付完成之后,这笔交易就成功了。

  另外,使用MetaMask还可以进行一键式安全登录。

  那么,用户必须得用MetaMask进行交易吗?答案是肯定的。我们必须获得终端用户的理解和信任,而MetaMask是一个很好用的以太坊轻钱包。然而,由于那些拥有以太币或比特币的用户之前没有使用过MetaMask钱包,因此,他们对MetaMask非常排斥。

  将去中心化应用中心化

  正如上文所说的那样,区块链的处理速度很慢!

  对于这一问题,唯一的解决方案就是:将去中心化应用程序中心化,即“读”智能合约数据并将其保存在数据库中。我们从区块链上获取数据(很慢),然后通过扩展API(快速的)为用户提供服务。

  使用智能合约的优势在于,它可以产生事件,如:

  emit Pokemon Transfer ({ from: 0XO67465,to: 0x43546})

  或

  emit Pokemon Birth ({ name: Nidoran })

  所以,当收到Birth事件时,就意味着有人调用createPokemon()函数,这时你就可以添加一个新的口袋精灵对数据库进行更新了。

  同样,当收到Transfert事件时,就意味着有人调用buy()函数。同样你也可以在数据库中更新给定口袋精灵的所有者。

  

  另外,我们也可以使用web3.js对这些事件进行监听,可以通过准备一个专门的服务器监听智能合约来实现。

  它可以是一个CRON任务,也可以托管在Google云、AWS Lambda,甚至是本地服务器上。我们甚至还可以自行选择编码,如Node.JS、Go或Python等。

  确保交易得到确认

  当我们接收到一个事件时,就会得到这笔交易的区块号。

  这里的区块号指的是与已经加到区块链上的交易相关联的区块。这并不意味着交易已经完成,因为这笔交易很有可能会失败,所以我们还得至少等待12个区块,才能确保交易成功。

  在交易完成之前,可以将交易状态设置为「等待(pending)」。举个例子来说,当我们创建一个口袋精灵的时候,可以在数据库中将其状态设置为「等待」,这时候口袋精灵就会展示给用户,但不支持购买。当我们添加完成以后,就可以覆盖一张卡片,告诉用户可以进行交易了。

  而至于服务器的架构,既然前文说到我们已经将应用程序中心化了,就可以使用API更快地向用户提供去中心化应用程序的数据,而数据库就好比是智能合约的一面镜子。

  

  结束语

  总结一下,在以太坊平台上创建一个宠物收藏应用,要做到以下两件事:

  区块链的运行速度很慢,你不可能要求应用能够及时获取数据,并及时展示给用户。

 执行truffle compile命令,将/contract目录下的智能合约文件编译成JSON文件,这个JSON文件中包含了智能合约ABI和其他一些数据;

  执行truffle migrate命令,将合约部署到区块链上。

  在合约编写完后,就可以发布了,通常智能合约会发布到以下路径:

  安装节点工具Ganache:这是一个本地私有链,可用于本地开发。

  Rinkeby、Ropsten等测试网络:相当于一个私有测试环境,且免费。

  以太坊主网Mainnet:这才是真正能赚钱的以太坊网络!

  在Truffle中的truffle-config.js配置文件中,我们可以设置不同的网络环境。然后使用truffle migrate命令将智能合约部署到Ropsten测试网络中。

  如何与智能合约进行交互?

  在与智能合约进行交互之前,我们还需要将web3.js库添加到脚本中。不过,如果你用的是react类库,则可以和Drizzle数据库搭配使用。

  在于区块链进行交互时,还得需要一个节点。区块链上的所有数据都存储在每个单独的节点中,因此,我们只需要和其中一个节点进行交互即可。

  在这里,我们用web3.js库与区块链节点进行交互,并执行

  web3.myPokemonContract.getPokemon(1) 

  等操作,就可以为我们提供交互所需要的一切。

  但在Rinkeby、 Ropsten测试环境中会略有不同,因为你并不属于区块链网络的一部分。如果没有网络节点,我们可以使用以下两种方法创建节点:

  使用gETH创建节点,并将其连接到测试网络上(Rinkeby,Ropsten等)。然后需要对其进行安装、配置并允许可以从外部对其访问、安全管理等。

  使用fura这样的laaS服务,该服务能维护自己的节点,并为我们提供所需的服务,比如一个便于与区块链进行交互的API。

  创建Web应用程序

  有了智能合约和区块链,你就可以进行“读”和“写”的操作了。

  读:通过 ID得到口袋精灵,得到自己拥有口袋精灵的数量等。

  写:创建一个口袋精灵→把新创建的口袋精灵写入智能合约→将其转移到另一个地址→在智能合约上写入新的拥有者等。

  在这个案例中,我们调用的是getPokemon ()和buy ()函数。

  到这里,我们总结一下,这个架构的基本思路就是:在的口袋精灵市场中,有一个能够从智能合约中收集口袋精灵信息的页面,并向用户展示,引导用户买入宠物精灵。

  

  还没有大功告成

  操作到了这一步,还没有大功告成,还有一些你必须清楚的情况。

  我们知道区块链有很多优点,比如去中心化、抗审查等,但是同时也存在缺陷——运行速度超级慢!

  仅仅是获取口袋精灵的详细信息,就可能会花费几秒钟的时间。对于区块链来说,良好的用户体验可能真的是一大挑战,因为我们会浪费大把的时间在页面加载上。

  此外,在区块链中「读」数据是免费的,而「写」数据,更新智能合约则需要付费。

  在读数据时,我们可以使用web3.js和getPokemon()函数读取区块链,但这并不包含任何其他额外的更新。

  而“写”数据则不然。根据区块链更新过程所需要的计算力,我们也需要支付一定的费用。此外,在购买项目的时候,需要使用以太币支付。但是,我们并不是非得将信用卡绑定在以太坊钱包中,而是可以使用MetaMask钱包进行支付。

  不过,这又引起了另一个问题,即以太币是如何支付到智能合约中的?

  MetaMask是一款基于浏览器插件的以太坊轻钱包。在购买宠物精灵的时候,我们可以使用web3.js要求MetaMask从自己的以太坊钱包中发送0.0004以太币,然后,MetaMask就会请求用户支付,支付完成之后,这笔交易就成功了。

  另外,使用MetaMask还可以进行一键式安全登录。

  那么,用户必须得用MetaMask进行交易吗?答案是肯定的。我们必须获得终端用户的理解和信任,而MetaMask是一个很好用的以太坊轻钱包。然而,由于那些拥有以太币或比特币的用户之前没有使用过MetaMask钱包,因此,他们对MetaMask非常排斥。

  将去中心化应用中心化

  正如上文所说的那样,区块链的处理速度很慢!

  对于这一问题,唯一的解决方案就是:将去中心化应用程序中心化,即“读”智能合约数据并将其保存在数据库中。我们从区块链上获取数据(很慢),然后通过扩展API(快速的)为用户提供服务。

  使用智能合约的优势在于,它可以产生事件,如:

  emit Pokemon Transfer ({ from: 0XO67465,to: 0x43546})

  或

  emit Pokemon Birth ({ name: Nidoran })

  所以,当收到Birth事件时,就意味着有人调用createPokemon()函数,这时你就可以添加一个新的口袋精灵对数据库进行更新了。

  同样,当收到Transfert事件时,就意味着有人调用buy()函数。同样你也可以在数据库中更新给定口袋精灵的所有者。

  

  另外,我们也可以使用web3.js对这些事件进行监听,可以通过准备一个专门的服务器监听智能合约来实现。

  它可以是一个CRON任务,也可以托管在Google云、AWS Lambda,甚至是本地服务器上。我们甚至还可以自行选择编码,如Node.JS、Go或Python等。

  确保交易得到确认

  当我们接收到一个事件时,就会得到这笔交易的区块号。

  这里的区块号指的是与已经加到区块链上的交易相关联的区块。这并不意味着交易已经完成,因为这笔交易很有可能会失败,所以我们还得至少等待12个区块,才能确保交易成功。

  在交易完成之前,可以将交易状态设置为「等待(pending)」。举个例子来说,当我们创建一个口袋精灵的时候,可以在数据库中将其状态设置为「等待」,这时候口袋精灵就会展示给用户,但不支持购买。当我们添加完成以后,就可以覆盖一张卡片,告诉用户可以进行交易了。

  而至于服务器的架构,既然前文说到我们已经将应用程序中心化了,就可以使用API更快地向用户提供去中心化应用程序的数据,而数据库就好比是智能合约的一面镜子。

  

  结束语

  总结一下,在以太坊平台上创建一个宠物收藏应用,要做到以下两件事:

  区块链的运行速度很慢,你不可能要求应用能够及时获取数据,并及时展示给用户。解决方案就是,创建一个事件处理器,来监听智能合约事件,并将所有的数据填充到一个数据库中,这就好比是一个镜像区块链


上一篇:星空矿机系统开发方案
下一篇:蚂蚁挖矿机系统开发

相关文章

源码分类

热门源码

最新资讯

联系我们