我正在寻找一个平台,使之能够在没有云服务的情况下为Dapp放置无服务器代码--这样应用程序就可以保持完全的集中化。
发布于 2017-06-06 17:56:51
你的问题不太清楚。根据定义,任何Dapp都是分散的(分散应用程序)。它由一个或多个契约组成,它们位于Ethereum块链上,可以通过Mist等启用web3的浏览器进行交互。作为最终用户,您的客户端通过web3.js库直接连接到您的Ethereum契约(S),而后者又充当了与Ethereum节点交互的JSON-RPC方法的接口。
就AWS Lambda而言,它的用途与Ethereum完全不同。当您在EVM ()中与Ethereum中的合同交谈时,其他节点唯一关心的工作就是验证合同状态中的更改。这意味着,如果运行一个添加1+1并返回它的函数,则不会更改状态。因此,加法在您的机器上运行客户端。但是,如果要将该值赋值为值为5的无符号32位整数,则会更改状态,该状态必须由网络验证,因此需要用gas作为财务奖励。请考虑以下示例:
Contract myContract {
uint32 i = 5;
function CalculateSum(){
// This calcuation is run by the client.
// j has local scope because it is in the function,
// meaning assigning to j does not change the contract state,
// and therefore this calculation costs no gas:
uint32 j = 1 + 1;
// This calculation is also run by the client,
// but because i is scoped to the contract
// by assigning it the client-calculated value of 2,
// we require the network to verify the change in state.
// This costs gas:
i = 1 + 1;
}
}另外,如果您正在寻找一个分散的API,如果一个API只公开数据,那么您可以在契约状态中存储少量的数据,并具有人们可以通过web.js库和JSON-RPC方法调用的函数。然后,您可以包含一个用于更新/设置数据的函数,但这需要某种程度的集中化,因为单个或受限的个人组将设置数据。您可以使用oracles来侦听区块链上的事件并对其作出反应,但您仍然只需在oracle硬件脱离链上运行计算。
最后,如果有人连接到您的API,他们很可能信任您公开的数据。如果这是一个不信任数据的问题,那么除了物理地试图确保数据是有效的(因为您正在处理集中式端点)之外,您没有其他选择。例如,英特尔试图实现一个区块链,以跟踪鱼类的供应链,并将区块链与IOT结合起来:
http://www.coindesk.com/intel-demos-seafood-tracking-sawtooth-lake-blockchain/
但是你仍然必须相信IOT设备所报告的数据的真实性和准确性,这需要一个离链解决方案。
基本上,以太不是为了你想要做的事。它不是像Lambda那样的云计算平台。它也不适用于分散存储(请参阅IPFS)。最后,在Ethereum上构建API是没有意义的,因为要这样做,您不可避免地只是从中央或多个集中源公开数据。Ethereum是一个执行合同和条件并验证对其状态的修改的平台。
https://ethereum.stackexchange.com/questions/17321
复制相似问题