굳헬로의 스팀 프로그램 일기!! 스물한번째 #21 레벨업을 했지만 또 다시 찾아온 시련!! 프로그램 결과와 블록체인에 기록된 결과가 다르다!! 어떻게 해야 할까...

in #sct5 years ago

steem.jpg

어제 시행착오와 시련을 극복하고 상당한 레벨업을 했지만, 역시 이 바닥은 만만치 않았습니다.

오늘도 열심히 했지만 또 다른 시련이...

그럼 그 이야기를 프로그램 일기로 남겨보겠습니다.


오늘은 어제 알게된 정보를 바탕으로 이전에 만들었던 스팀코인판의 조합의 임대 내역을 새롭게 설계를 하고, 임대 내역 오류를 확인하는 코드를 만들어 보았습니다.

먼저임대내역 정보가 저장되는 mysql 데이터베이스의 테이블을 다음과 같이 수정하여 트랜잭션 아이디를 키 값으로 지정을 하였습니다.

이전에는 블록넘버를 키 값으로 지정했었는데, 한 블럭에 여러개의 임대 정보가 있다면 누락되는 부분이 생기기에, 키 값을 트랜잭션 아이디로 변경하고, 다시 데이터를 저장을 했답니다.

이제 데이터베이스에는 트랜잭션 아이디 t_id가 추가로 잘 저장이 되었네요.

그리고 실시간으로 블록을 검사하여 임대내역을 뽑아와서 데이터베이스에 저장하는 코드도 수정을 하였고

현 시각 잘 돌아가고 있는걸 확인하였습니다.

그리고 각 조합의 임대 내역이 잘 맞는지 확인을 해보았는데요...

잘못된 블록이 있는건지 조금 틀린 부분이 있더라구요.

먼저 @banguri 님의 @naha.sct 로의 임대내역이 조금 이상하더라구요.

query = {"symbol":"SCT", "to":"naha.sct", "from":"banguri"}
out = api.find("tokens", "delegations", query, 1000)

print(json.dumps(out, sort_keys=True, indent=2, separators=(',', ': ')))

출력 결과

이렇게 한개의 내역만이 나오는데...

제가 돌린 프로그램 결과

이렇게 내역이 2개 나오네요.

그래서 블록 넘버로 데이터를 조회 해 보았습니다.

out = api.get_block_info(473111)
print(json.dumps(out, sort_keys=True, indent=2, separators=(',', ': ')))

출력결과

{
  "$loki": 473112,
  "blockNumber": 473111,
  "databaseHash": "08f6230e4311b2d3e3d5e6d9c8fafbde1560dfdb5c285c44449624dcea93d31a",
  "hash": "fbceb5785e1055a8319dc899ada55ebaecc2c54571e2652a2bf77801d595085c",
  "merkleRoot": "88217cbc0067ca75422c605ecf09470d6ba87a98c66efe450c971b748d7a8cd6",
  "prevRefSteemBlockId": "020a98a33f872a88072f4dd46bfa263b8a5b06ac",
  "previousDatabaseHash": "3f640d8ca2ed243f4f93c1ef523316b550ce80b0249d3c94598685422b71fff8",
  "previousHash": "a0ac627575203a88349b542392ff0036fbf42220e5f3b07001711e9f4fa99dbe",
  "refSteemBlockId": "020a98a4d83c0e84befda74f20ddf651f7a20c8e",
  "refSteemBlockNumber": 34248868,
  "signature": "200f1585dffef5907555643b94e92b9e29560f8391c9c8b54b066e966e6e8b209e1920ba0529a4dcb49db6b81d5ba4e32f2df36e4712ee8038089f1d4a390b9219",
  "timestamp": "2019-06-30T09:45:24",
  "transactions": [
    {
      "action": "delegate",
      "contract": "tokens",
      "databaseHash": "ab3e43d3c83122e8215a57c52e7489a8ba4697d7a0f8f6fc56ecd533569062a8",
      "executedCodeHash": "15c9a606798bec45f6dfc8996e7b78a619e384107a725cc67cb9bb88cea1b385",
      "hash": "f753616539cec47caf1092f91205776a89d3a2bd6094e32a02b831e102681738",
      "logs": "{\"events\":[{\"contract\":\"tokens\",\"event\":\"delegate\",\"data\":{\"to\":\"naha.sct\",\"symbol\":\"SCT\",\"quantity\":\"500\"}}]}",
      "payload": "{\"to\":\"naha.sct\",\"symbol\":\"SCT\",\"quantity\":\"500\",\"isSignedWithActiveKey\":true}",
      "refSteemBlockNumber": 34248868,
      "sender": "banguri",
      "transactionId": "0a3d02d4a594a30647f1f9385c07910a49eed4ca"
    }
  ],
  "virtualTransactions": []
}

쉽게 보기 위하여 스팀엔진 블록 익스플로러에서 확인을 해보겠습니다.

https://steem-engine.rocks/b/473111

그리고 임대내역이 있는 다른 블록도 확인을 해보았습니다.

out = api.get_block_info(471674)
print(json.dumps(out, sort_keys=True, indent=2, separators=(',', ': ')))

출력결과

{
  "$loki": 471675,
  "blockNumber": 471674,
  "databaseHash": "fde6281ae9045340558f4eb127c2a7d32bb461ec02b1f88536ee08a9042972bd",
  "hash": "3403334cb1644505bd37284ea721021b7375453796051dfaddbae8c73fcef498",
  "merkleRoot": "f01e0bfd69904ae9b22e381fe140d2882a1bcbc186875ab2a4e78bfb1070c309",
  "prevRefSteemBlockId": "020a87ec29918f2a9366b3d1ccb4e28a4dc0e3ad",
  "previousDatabaseHash": "3189bb7616ce8f89064856622e927293dac09c78595683180aace03e43f930e5",
  "previousHash": "7a50063100febcc276ab0a2bdfb2c3877c492e4855a07c5e9b7ea1c3259c1912",
  "refSteemBlockId": "020a87edf195370e0302f93e5d9d04cc37b1fc51",
  "refSteemBlockNumber": 34244589,
  "signature": "2070d0cb262f43621fd965a4c3c78f64c6a4a093a8f91ae3147db1c4999b7b228b1167a94ef2d5d3e7b56a529c92f58dbe5161a9cf4de380a1886372724e2b989b",
  "timestamp": "2019-06-30T06:11:12",
  "transactions": [
    {
      "action": "sell",
      "contract": "market",
      "databaseHash": "7623a5a27152286e54758e8d7f3acd0eb2c63c6974edd73df69ff3818ea75b38",
      "executedCodeHash": "0e2a4ba3fd4b651d9897a208888fd3ebfe85e5c32d350e602876fefacc99590115c9a606798bec45f6dfc8996e7b78a619e384107a725cc67cb9bb88cea1b385",
      "hash": "9a4a87e71985b66621668e7aad7d25b73880c1d14a6cd73d40fbc03621fd2411",
      "logs": "{\"events\":[{\"contract\":\"tokens\",\"event\":\"transferToContract\",\"data\":{\"from\":\"bapin\",\"to\":\"market\",\"symbol\":\"MEEP\",\"quantity\":\"1\"}}]}",
      "payload": "{\"symbol\":\"MEEP\",\"quantity\":\"1\",\"price\":\"0.75424\",\"isSignedWithActiveKey\":true}",
      "refSteemBlockNumber": 34244589,
      "sender": "bapin",
      "transactionId": "1db2d58663149a268fd7084a24ed0bed8829c128"
    },
    {
      "action": "delegate",
      "contract": "tokens",
      "databaseHash": "53d5bcd85dd1e546583259b254db5a147342523f9187e710eb34a86c763a0530",
      "executedCodeHash": "15c9a606798bec45f6dfc8996e7b78a619e384107a725cc67cb9bb88cea1b385",
      "hash": "c252b058444041dd1296300f651f3d7cb9e9daad0eb1c57c48449e9808ad25c9",
      "logs": "{\"events\":[{\"contract\":\"tokens\",\"event\":\"delegate\",\"data\":{\"to\":\"naha.sct \",\"symbol\":\"SCT\",\"quantity\":\"500\"}}]}",
      "payload": "{\"to\":\"naha.sct \",\"symbol\":\"SCT\",\"quantity\":\"500\",\"isSignedWithActiveKey\":true}",
      "refSteemBlockNumber": 34244589,
      "sender": "banguri",
      "transactionId": "75f6d31f6442282c8e8d95d1bdbe6aac996b69c7"
    }
  ],
  "virtualTransactions": []
}

그리고 블록엔진 익스플로러에서 확인을 해보았더니

https://steem-engine.rocks/b/471674

역시 블록에 임대내역이 기록이 되어 있더라구요.

그리고 블록체인 익스플로러를 이용해 @banguri 님의 SCT 임대내역을 조회해 보니

https://steem-engine.rocks/@banguri/SCT?contract=tokens&contract_action=delegate

역시나 naha.sct로의 500SCT 임대내역이 2개 있습니다.

혹시나 임대 회수를 한적이 있는지 확인을 했더니

https://steem-engine.rocks/@banguri/SCT?contract=tokens&contract_action=undelegate

naha.sct로부터는 임대회수를 한적이 없더군요.

엄청난 혼란이....

빨리 다음 단계로 나아가려고 했는데... 여기서 헤매고 있다니...

블록에 잘못된 기록이 있는건지... 아니면 블록에는 기록이 되어졌지만 실행은 안된건지...

그것을 어떻게 알수 있는지를 열심히 조사해보고 싶지만...

일단 오늘은 이정도에서 마무리하고 잠시 휴식을 취하기로 했답니다.

공부라는게 정말 쉽지가 않군요.

그럼 다음시간에는 조금만 더 조사해보고 안되면 능력자분들에게 도움을... 요청해봐야 겠습니다.

그럼 여러분들 오늘 하루도 행복하게 보내시구요.

전 휴식을 취하고 다음시간에 다시 돌아오겠습니다.


굳헬로의 스팀 프로그램 일기!! 시리즈

#1 굳헬로의 스팀 프로그램 일기!! 대망의 시작 #1 Python 프로그램 설치 && steemengine 파이썬 api 설치 && 간단한 steemengine 예제

#2 굳헬로의 스팀 프로그램 일기!! 그 두번째 #2 비주얼 스튜디오 코드 프로그램 설치 && 비주얼 스튜디오 코드를 사용하여 파이썬 다루기 && 간단한 steemengine 예제

#3 굳헬로의 스팀 프로그램 일기!! 세번째 #3 스팀엔진 토큰의 정보를 가져오는 findOne() && 누군가의 토큰 사용 내역을 가져오는 get_history() && JSON 데이터 출력

#4 굳헬로의 스팀 프로그램 일기!! 네번째 #4 steemengine Token 클래스 && Token.get_holder() && Token.get_market_info() && Token.get_buy_book() && Token.get_sell_book()

#5 굳헬로의 스팀 프로그램 일기!! 다섯번째 #5 스팀엔진 블록을 뒤져서 원하는 정보를 찾아보자!! 스팀엔진 마켓 거래 내역을 뽑아내는 예제

#6 굳헬로의 스팀 프로그램 일기!! 여섯번째 #6 파이썬으로 스팀엔진 토큰들을 클레임 해보자.

#7 굳헬로의 스팀 프로그램 일기!! 일곱번째 #7 프로그램 일기도 어느덧 1주일!! 드디어 첫 실전!! 무한 반복 작업 수행하기!! 이제 직접 클레임 하는 손맛은 잊자. 무한 반복 자동 클레임!!

#8 굳헬로의 스팀 프로그램 일기!! 여덟번째 #8 텔레그램 봇을 이용해 알림을 받아보자!! && 무한 반복 자동 클레임의 정보를 텔레그램으로 받아보기!!

#9 굳헬로의 스팀 프로그램 일기!! 아홉번째 #9 무한 반복 자동 클레임 업그레이드!! && 토큰 잔고 확인 && 토큰 전송과 토큰 전송 내역을 텔레그램으로 받아보기!!

#10 굳헬로의 스팀 프로그램 일기!! 열번째 #10 토큰 전송내역을 검사하고, 토큰을 전송 받으면 텔레그램으로 알림을 받아보기!!

#11 굳헬로의 스팀 프로그램 일기!! 열한번째 #11 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (1/2)

#12 굳헬로의 스팀 프로그램 일기!! 열두번째 #12 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (2/2) 스팀엔진 토큰 임대내역 추적 완료!!

#13 굳헬로의 스팀 프로그램 일기!! 열세번째 #13 웹 프로그래밍의 시작!! 파이썬을 이용하여 정보를 MySQL 데이터 베이스에 저장해보기!!

#14 굳헬로의 스팀 프로그램 일기!! 열네번째 #14 파이썬을 이용하여 데이터베이스로부터 정보를 가져오기 && 스팀코인판 3대풀 임대내역 데이터베이스 작업 완료!!

#15 굳헬로의 스팀 프로그램 일기!! 열다섯번째 #15 웹 프로그래밍을 이용하여 스팀코인판 3대조합의 임대 내역을 웹으로 확인해보자 !!

#16 굳헬로의 스팀 프로그램 일기!! 열여섯번째 #16 스팀엔진 최신 블록을 검사하여 필요한 정보를 데이터베이스에 저장하기!! 3대 조합의 임대내역을 최신으로 저장하기!!

#17 굳헬로의 스팀 프로그램 일기!! 열일곱번째 #17 조합들이 필요한 기능 드디어 완성!! 자동 클레임과 자동 분배 기능!!

#18 굳헬로의 스팀 프로그램 일기!! 열여덟번째 #18 스팀코인판 3대 조합의 임대내역과 실시간 예상 분배 금액을 웹으로 확인해보자!!

#19 굳헬로의 스팀 프로그램 일기!! 열아홉번째 #19 어제 만든 프로그램 업그레이드!! 개별 상세내역보기 기능 추가!!

#20 굳헬로의 스팀 프로그램 일기!! 어느덧 스물번째 #20 시행착오... 그리고 시련... 하지만 원사마님 덕분으로 엄청난 레벨업!! 감사합니다. 더욱 발전하겠습니다.

Sort:  

union.sct님이 goodhello님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
union.sct님의 [공지] 스판유니언 조합원 대상 22차 큐레이션 수익배분 완료 안내

... 12 19 2차 추가 goodhello/td> 3000 2.57% 12 <td...

세상엔 만만한건 존재하지 않습니다!! 이쯤에서 포기하시고, 저랑 놀아요! ㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋ 어디서 놀까요???

ㅎㅎ 조금만 더 힘내 보세요. 하이팅!!

아무래도 스팀엔진 사이드 체인에 문제가....

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

Hi @goodhello!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.990 which ranks you at #4044 across all Steem accounts.
Your rank has dropped 157 places in the last three days (old rank 3887).

In our last Algorithmic Curation Round, consisting of 164 contributions, your post is ranked at #160.

Evaluation of your UA score:
  • Some people are already following you, keep going!
  • Try to show your post to more followers, for example via networking on our discord!
  • Try to work on user engagement: the more people that interact with you via the comments, the higher your UA score!

Feel free to join our @steem-ua Discord server

Coin Marketplace

STEEM 0.32
TRX 0.11
JST 0.034
BTC 66004.40
ETH 3243.40
USDT 1.00
SBD 4.19