[개발] 대박이라 기대했던 escrow 기능

안녕하세요 @realmankwon입니다.

어제 포스팅에서 스팀에서 스컨 비스무리한 기능이 있을지도 모른다는 기대감에 부풀었었는데 막상해 보니 기대가 너무 컸습니다.
그 기능은 바로 Escrow 기능인데요.

항상 봐왔던 스팀 api 소스에서 쉽게 찾아볼 수 있습니다.

https://github.com/steemit/steem-js/blob/master/doc/README.md#api

이 기능으로 Escrow를 생성한 계정이 Release를 하면 agent로 보냈던 스팀이나 스달이 자동으로 전송이 되지 않을까 기대했었는데 실제 코인의 전송은 일어나지 않았습니다.

그래도 키를 이용하여 서로간에 거래를 수행하는 데이터는 신뢰할 수 있어서 커스텀 제이슨 보다는 나은 것 같기는 합니다.
이때 필요한 계정은 총 3개입니다.

  • from : 돈을 지불을 계정
  • to : 서비스를 제공하고 돈을 받을 계정
  • agent : 중계인

Escrow를 사용하기 위해서 가정 먼저해야 할 것은 Escrow Transfer 입니다.
from 계정이 Escrow 를 생성하는 것입니다.

steem.broadcast.escrowTransfer(
     wif,       // from 의 active key
     from,      // escrow를 생성하는 계정
     to,             
     agent, 
     escrowId,  // 임의의 수(단 현재 생성되어 있는 escrowId 는 생성 되지 않음) 
     sbdAmount, 
     steemAmount, 
     fee, 
     ratificationDeadline,  // "2022-06-25T00:00:00"
     escrowExpiration,   // "2022-06-26T00:00:00" - ratificationDeadine 보다 커야함
     jsonMeta,   // 임의의 데이터
     function(err, result) {
            console.log(err, result);
     }
);

Escrow가 생성되고 나면 to, agent 계정이 approve 를 해 주어야 해당 Escrow가 성립이 됩니다.
getEscrowAsync 함수를 이용하면 현재 Escrow의 상태를 알 수 있습니다.

     let data = await steem.api.getEscrowAsync(from, escrowId);

위와 같이 하면 아래와 같이 결과값이 나옵니다.

     agent:'realman0711'
     agent_approved:false
     disputed:false
     escrow_expiration:'2022-07-02T00:00:00'
     escrow_id:2
     from:'realmankwon'
     id:299
     pending_fee:'0.001 STEEM'
     ratification_deadline:'2022-07-01T00:00:00'
     sbd_balance:'0.000 SBD'
     steem_balance:'0.001 STEEM'
     to:'realmankwon.cur'
     to_approved:false

agent_approved와 to_approved 가 false 상태이기 때문에 해당 Escrow는 다음 단계로 넘어갈 수가 없습니다.
이때 escrowApprove를 통해서 approve를 할 수 있습니다.

  steem.broadcast.escrowApprove(
    key,    // active key of to or agent
    from,
    to,
    agent,
    who,   // to or agent
    escrowId,
    true,
    async function (err, result) {
      console.log(err, result);
      let data = await steem.api.getEscrowAsync(from, 1);
      console.log(data);
    }
  );

who 에는 to와 agent 계정만 가능합니다.
key 는 to 일때는 to의 active key로 agent일때는 agent의 active key 를 입력하면 됩니다.
만약 이상이 있으면 escrowDispute를 이용하면 됩니다.
사용법은 escrowApprove와 동일합니다.

2 계정이 모두 approve를 하고 나면 escrowRelease를 하여 escrow를 종료시켜 줄 수 있습니다.

  steem.broadcast.escrowRelease(
    key,
    from,
    to,
    agent,
    who,             // from or to or agent
    receiver,     // from or to
    1,
    "0.000 SBD",
    "0.001 STEEM",
    function (err, result) {
      console.log(err, result);
    }
  );

escrowRelease 는 who 에 from/to/agent가 올 수 있고 receiver 에 from/to 가 올 수 있지만 2개가 동일하게 입력될 수는 없습니다.
who가 from 이면 receiver 는 to/agent가 되어야 한다는 의미입니다.
이렇게 처리가 되고 나면 escrow 는 삭제가 됩니다.

하지만 이 과정에서 실제로 STEEM, SBD 는 전송이 되지 않았습니다.
즉 STEEM, SBD 의 전송은 계정에서 각자가 해야 하고 마지막에 agent도 to 가 from이 지정한 행위를 했는지를 확인하고 직접 전송을 해줘야 합니다.
전송은 각자가 하고 그 행위를 증명하는 데이터의 단계별 처리만 해주는 것이라 이런 서비스를 가능하게 하려면 신뢰할 수 있는 agent가 개발을 하고 운영을 해야 하는 상황입니다.
이런 서비스의 수요가 얼마나 될지 모르겠지만 UPVU 정도의 신뢰도라면 한번 만들어 봐도 괜찮을 것 같긴 합니다.

하지만 어차피 UPVU를 신뢰한다면 이런 번거로운 절차없이 가능할 것 같기도 합니다.
암튼 스팀에서 새로운 것을 한번 공부한 것에 의의를 둡니다.

Sort:  

Upvoted! Thank you for supporting witness @jswit.
default.jpg

아쉽네용. 되면 좋을텐데

그러게요...ㅜㅜ

뭔가 하려고 하다가 멈춘 듯한 느낌이군요. escrow 종료가 되면 자동으로 전송이 되면 좋을 듯 한데, 그게 아니라면 굳이 사용할 필요는 없을 듯 합니다. upvu 정도면 escrow 충분히 할 수 있죠.

댄이 에스크로나 SMT만 완료하고 떠났으면 좋았을텐데 말이죠..
아쉽습니다.

@realmankwon transfered 20.000 KRWP to @krwp.burn. voting percent : 100.00%, voting power : 20.67%, steem power : 1991985.27, STU KRW : 1200.
@realmankwon staking status : 15907.726 KRWP
@realmankwon limit for KRWP voting service : 15.907 KRWP (rate : 0.001)
What you sent : 20.000 KRWP (Voting Percent over 100 %)
Refund balance : 17.137 KRWP [65378093 - 78fb02ff33e2c37048509e24fff4fa4943da9948]

예전 스팀페이는 단순히 그냥 전송기능만 있었던 걸까요??

네네
보통 오프라인으로 만난 상태이니 바로 전송하고 확인이 가능한 것입니다.
에스크로는 온라인 상에서 만나지 않고 안전한 거래를 할 수 있도록 도와주는 것인데 전송 기능은 빠져 있으니 아쉽네요.

잘은 모르지만 뭔가 조금 아쉽네요.

많이 아쉽습니다!!

Hi @realmankwon
This question is unrelated but I want to ask what is the site for Blurt with regards to delegating to upvu?

Thanks.

상세한 설명 고맙습니다! 실제 전송이 안 일어나는 것은 아쉽네요.

Coin Marketplace

STEEM 0.27
TRX 0.12
JST 0.031
BTC 57254.26
ETH 2887.51
USDT 1.00
SBD 3.60