Blockchain 以太坊智能合约如何在移动客户端上工作

Blockchain 以太坊智能合约如何在移动客户端上工作,blockchain,ethereum,solidity,web3,web3-java,Blockchain,Ethereum,Solidity,Web3,Web3 Java,我想在服务器上部署智能合约,并使用移动客户端与之交互。我不熟悉这是如何工作的,但经过一些研究,我发现如下情况: 如果我们比较移动客户端中通过web服务的通信,那么几乎所有事情都与智能合约中的预期相同,因为系统的分散性,没有数据库或部署服务。是这样吗?我们可以使用一些库(比如web3)将移动客户端连接到智能合约,这些库基本上可以与Json RPC或WebSocket一起工作 但如果我不想使用像web3这样的库将每个移动客户端连接到智能合约,该怎么办?相反,如果我想要一个HTTP服务器,然后它将连

我想在服务器上部署智能合约,并使用移动客户端与之交互。我不熟悉这是如何工作的,但经过一些研究,我发现如下情况:

如果我们比较移动客户端中通过web服务的通信,那么几乎所有事情都与智能合约中的预期相同,因为系统的分散性,没有数据库或部署服务。是这样吗?我们可以使用一些库(比如web3)将移动客户端连接到智能合约,这些库基本上可以与Json RPC或WebSocket一起工作

但如果我不想使用像web3这样的库将每个移动客户端连接到智能合约,该怎么办?相反,如果我想要一个HTTP服务器,然后它将连接到如下所示的智能合约,该怎么办?

可能吗?如果是,那我怎么做

我的第二个问题是关于部署。在集中式服务器场景中,我会在AWS等服务上部署数据库。我可以估计部署成本。我知道,我们必须在以太坊mainnet上部署智能合约,这将花费大约x数量的以太。但后来我发现我的用户必须为每次计算付费。如果我想承担所有费用怎么办?我们如何估计这些费用

请引导我回答上述问题。谢谢

相反,如果我想要一个HTTP服务器,然后它将连接到如下所示的智能合约,该怎么办

你当然可以做到这一点,有些人可能会争辩说,通过在DApp和区块链之间放置一个web服务器,增加了一层集中化,但我不同意。如果您想这样做,您的DApp只需在您的web服务器上调用REST API,作为回报,它将利用(node.js)、(Java)、(C#/.NET)或任何其他风格的Web3直接与区块链交互

如果我想承担所有费用怎么办

您将只能承担部署智能合约的成本,这些合约是以您的名义部署的,而不是以任何潜在最终用户的名义部署的

我们如何估计这些费用

您可以通过web3的方法估计合同部署或合同交互的气体成本。要知道,这一成本在很大程度上受Solidity智能合约代码的良好结构的影响。注意,这当然也只是一个估计,因为用户总是可以花费更多的乙醚来更快地确认其交易,或者智能合约中的数据状态可能会随着时间的推移而变化,需要更高的天然气成本(即迭代不断增长的阵列)。有关以太坊mainnet内天然气成本的更多信息,请查看

作为旁注,由于我不知道您的区块链技术的具体使用案例,因此权衡一下使用以太坊mainnet或自行开发是否有意义可能会有所帮助。使用后者,您将完全避免花费任何以太与区块链网络交互,但您可能会有额外的开销