[암호화폐] 그것이 알고 싶다!! 토큰 staking하기

Words
266
Reading
2 min
Listen
Play
7y

토큰을 claim[1]하고, 필요한 계정으로 전송[2]한 다음에 할 일은 토큰을 staking하는 것입니다. 이렇게 되면 글쓰기나 큐레만 집중을 하면 됩니다. 나머지는 자동으로 정산이 되는 것이죠.

이제 마지막으로 남은 토큰 staking하는 방법을 살펴봅니다.

토큰 관련 API가 정리된 문서가 없다 보니, 눈치껏 개발을 해야 합니다. 그 방법을 알려드립니다.

지난번 전송 시에도 custom_json을 사용하여 스팀블록체인에 기록되었듯이, staking도 비슷하게 처리가 될 것입니다. steemd.com에 접속해서 최근에 staking한 이력을 찾아봅니다.

다행이 ZZANM을 staking한 기록이 있군요.

staking을 위해서는 active key가 필요하고, id는 ssc-mainnet1이고 json의 구성은 위와 같군요.

토큰 전송 시에 사용한 json과 거의 비슷합니다. 그럼 기존 코드를 바탕으로 stake를 위한 custom_json 코드를 만들어봅니다. 별로 어려운 건 없죠? 그냥 steemd.com에서 찾은 stake용 custom_json과 같은 형태로 코드를 채워 넣습니다.

def token_stake(steem, user, symbol, qty) :
    # qty : float
    json = {
        "contractName": "tokens",
        "contractAction":"stake",
        "contractPayload":{
            "symbol":symbol,
            "to":user,
            "quantity":str(qty),
            }
         }
    ops = [
        operations.CustomJson(**{
            "from": user,
            "id": "ssc-mainnet1",
            "json": json,
            "required_auths": [user],
            "required_posting_auths": [],
        }),
    ]

    broadcast(steem, user, ops, "active")

이 함수를 부르는 코드도 만듭니다.

def do_token_stake(account, symbol, qty) :
    try :
        mySteem = Steem(nodes=[STEEM_NODE_ADDR],
                keys=[passwords[account]])
        token_stake(mySteem, account, symbol, qty)
    except Exception as ex :
        print("do_token_stake error")

do_token_stake('tradingideas', 'SCT', 1.0)

잘 동작하는지 확인해 봐야겠죠.

일단 스팀 블록체인에는 잘 등록이 되었습니다.

블록체인에 등록이 되었다고 정상적으로 staking이 되었다는 보장이 없으니 steem-engine에서 찾아봅니다.

https://steem-engine.rocks/@sct

여기에 등록이 되어 있으면 staking이 잘 된 것입니다.

이것으로 claim부터 staking까지 일련의 과정을 파이썬으로 작업을 할 수 있는 기반을 마련했습니다.

기본적인 함수를 만드는 것과 전체적으로 잘 돌아갈 수 있는 프로그램을 만드는 것은 또 다른 일입니다. 시간이 훨씬 많이 걸리는 일입니다만, 조금이라도 시간을 절약하기 위해서는 한 번은 해야 할 일인 것 같아서 짬짬이 작업을 할 예정입니다.


[1] 토큰 Claim하기
[2] 토큰 전송하기

[암호화폐] 그것이 알고 싶다!! 토큰 staking하기 | Ecency