好的,假设有一个Web,它提供某种服务/计算,并按给定的成本计算。这个API本身依赖于调用另一个也有代价的API。
是否有可能以这样的方式设置付款:第一个API获得ether合同,一旦它成功交付结果,它将被授予一定数量的以太。而第一个API与第二个API创建了一个契约,在第一个合同被支付时,它将自动支付第二个API获得的资金的百分比/固定部分?
如果有可能的话,交易费用到底有多高才能证明是合理的呢?目前的交易费用似乎高得令人望而却步(如果我理解正确的话,是0.21美元)。是否有大幅降低交易费用的计划,还是Ethereum合同不应该用于低价值交易?
发布于 2017-09-22 10:08:59
一般来说,您可以根据某些结果授予服务所有者( API也不例外)。但是,请记住,不能从合同中检查成功条件,因为合同只能检查区块链中发生的事情,不能收集任何类型的外部数据。
这是块链设计的结果,所有节点都执行相同的计算。想象一下,如果所有节点都连接到一个web服务来评估某种离链状态。这是不可能的。因此,要完成解决方案的设计,您可能需要在链上和链外之间架起一座桥梁。这通常以甲骨文的形式出现,甲骨文是一种软件,可以从网络上读取数据,然后产生有效的交易来解锁合同中的金钱。甲骨文也可以是人类。Oraclize.it是一个软件,也就是所谓的可证明的、诚实的预言实现。
关于问题的第二部分,关于如何与第二个API提供者分割报酬,这是相当简单的,合同可以用很少的指令来管理。我在这里插入了一些代码,但认为它更多的是伪代码而不是实际代码。
contract Reward{
address public api1=0x123;
address public api2=0x124;
bool goalAchieved=false;
address oracle=0x234;
function unlock (){
//only oracle can unlock
if (msg.sender !=oracle) throw;
goalAchieved = true;
}
function () payable {
//this receives funds from a customer
}
function redeem(){
//only api1 can redeem
if (msg.sender != api1)throw;
if (!goalAchieved)throw;
api1.send(this.balance / 2);
api2.send(this.balance / 2);
}}
关于事务费,GAS需要我的成本超过您的API调用的值。但这确实取决于您的特定用例。每一个API调用的事务都可能会导致过度,请考虑出售N个调用的配额。
https://ethereum.stackexchange.com/questions/26885
复制相似问题