steemit上的Escrow Transfer怎么这么奇怪?

in #cn5 years ago (edited)

steemit上的Escrow Transfer过了有效期居然不会自动付款。

被娃吵醒了,睡不着,干脆起了个早。
想起昨天@davidke20 让看一下escrow,遂研究了一番。
研究后发现,steemit实现的escrow有点奇怪。

一共有四个Escrow操作,分别是
escrow_transfer
escrow_approve
escrow_release
escrow_dispute

官方文档看这里:https://developers.steem.io/apidefinitions/#broadcast_ops_escrow_transfer

1.escrow_transfer

steem.broadcast.escrowTransfer(
    wif, // active key
    from,
    to, 
    agent, 
    escrow_id,
    sbd_amount,
    steem_amount,
    fee, 
    ratification_deadline,
    escrow_expiration,
    JSON.stringify({'test':'test'}),
    function(err, response) {
        console.log(err, response);
    }
);

这些字段字面理解即可,我就不做过多说明了。
执行后会产生这样一条交易记录。

2.escrow_approve

steem.broadcast.escrowApprove(
        wif,
        from,
        to,
        agent,
        who,
        escrow_id,
        'true',
        function(err, response) {
            console.log(err, response);
        }
);

产生区块记录如下:

交易发起后,需要收款方和escrow代理各自执行approve操作。然后,escrow交易才算正式开始。
如果收款方和代理没有在ratification_deadline规定的时间内approve。发起方被暂扣的款项将退回发起方帐号。

3.escrow_release

steem.broadcast.escrowRelease(
        wif,
        from,
        to,
        agent,
        who,
        receiver,
        escrow_id,
        sbd_balance,
        steem_balance,
        function(err, response) {
            console.log(err, response);
        }
);

这个是用来付款的。官方规则如下:
如果没有纠纷,没人调用escrow_dispute方法:
那么分为有效期内和过期两种情况。
有效期内,付款和收款方可以分多次分批支付或退回款项给对方。
过有效期后,“诡异”的事情出现了。付款和收款方可以任意支配escrow交易里的余额了,可以付给对方,也可以付给自己。到期后,难道款项不是应该自动付给收款方的吗? 这样的话,这个方法似乎就只适合大宗贸易而不太适合普通电商支付了。
(另外,没有纠纷的情况下,escrow代理是无权执行此方法的。)

如果有纠纷,那么就只能由escrow代理来执行该方法了。

4.escrow_dispute

由于其他方法测试一切正常,这个方法我就没测了。这个是发起纠纷仲裁的。付款和收款方可以调用该方法让escrow代理来仲裁。这样付款权限就交到escrow代理手里了。

经测试,escrow交易正常可用。只是到期不会自动给把款项付给收款方,这个有点诡异。不太适合收款方有大量交易的应用场景。

Sort:  

那你后来收到了吗?

Posted using Partiko Android

我确定收付都是正常的

还真是怪

Posted using Partiko Android

Coin Marketplace

STEEM 0.30
TRX 0.12
JST 0.034
BTC 63960.62
ETH 3142.95
USDT 1.00
SBD 3.95