打字猴:1.703878036e+09
1703878036 区块链项目开发指南 [:1703875362]
1703878037 区块链项目开发指南 6.3.2 创建后端
1703878038
1703878039 先创建App后端。首先,在initial目录中运行npm install,为后端安装所需相关内容。
1703878040
1703878041 下面是运行快捷服务并用于index.html文件和静态文件的完整后端代码:
1703878042
1703878043
1703878044
1703878045
1703878046 程序代码无须解释说明。继续创建后端操作。应用上会有Compile和Deploy两个按钮。用户单击Compile按钮,就编译合约;单击Deploy按钮,就部署合约。
1703878047
1703878048 我们将在后端编译和部署合约。尽管这可以在前端实现,我们还是在后端进行操作,因为solcjs仅对node.js可用(尽管它使用的JavaScript-based编译器在前端工作)。
1703878049
1703878050
1703878051 为了学习如何在前端进行编译,最好了解一下solcjs源代码,以从中知悉JavaScript-based编译器显示的API的一些情况。
1703878052
1703878053 用户单击Compile按钮时,前端将通过传送合约源代码向/compile路径发出GET请求。如下是该路径的代码:
1703878054
1703878055
1703878056
1703878057
1703878058 首先导入solcjs库。然后定义/compile路径,在路径回调函数中仅编译启动optimizer的客户端发送的源代码。接着只发送solc.compile方法的返回值到前端,并让客户端检查编译是否成功。
1703878059
1703878060 用户单击Deploy按钮时,前端通过传送合约源代码和来自该地址的constructor实参和私钥向/compile路径发出GET请求。当用户单击这个按钮时,合约就被部署了,交易哈希将被返回给用户。相关代码如下:
1703878061
1703878062 程序代码的执行过程如下:
1703878063
1703878064
1703878065
1703878066
1703878067
1703878068
1703878069
1703878070
1703878071
1703878072
1703878073
1703878074
1703878075
1703878076 上述代码的执行过程如下:
1703878077
1703878078 1)Web导入web3.js、BigNumber.js、ethereumjs-util和ethereumjs-tx库,然后创建一个Web3实例。
1703878079
1703878080 2)定义一个函数etherInSpentPendingTransactions,该函数用于计算一个地址的待定所有交易花费的全部以太币。由于web3.js不提供与交易池相关的JavaScript API,因此使用web3.currentProvider.sendAsync进行原始JSON-RPC调用。sendAsync用于异步调用原始JSON-RPC。如果想同步调用,则使用send方法而非sendAsync。当计算一个地址的待定交易中花费的全部以太币时,我们在交易池而非在待定区块中寻找待定交易。在计算以太币总数时,我们把每个交易的值和gas加起来,因为消耗gas也会从账户以太币余额中扣除。
1703878081
1703878082 3)定义geNonce函数,使用之前讨论的技术检索一个地址的nonce。它把挖出的交易总数和待定交易总数简单相加。
1703878083
1703878084 4)声明/deploy端点。首先编译合约,然后只部署第一个合约。如果在提供的源代码中发现多个合约,平台将只部署第一个合约。之后,可以改进app,使其部署所有被编译的合约,而非仅仅第一个。然后使用web3.eth.contract创建一个合约对象。
1703878085
[ 上一页 ]  [ :1.703878036e+09 ]  [ 下一页 ]