[Symbol] 노드 운영자를 위한 세련된 복원 도구 개발

13169 단어 #XYM#symbolPython#nem

개요

  • 하버드 스타
  • 에 Habest 보수 내 노드 보수를 복원하고 OSS로 공개
  • 본고는 실제 도구의 도입, 설정, 집행을 소개할 것이다.

  • [Symbol] 하마웨이 보수 99% 환원 노드 운영 시작의 속편
  • Symbol 투자플랫폼의 QUEST도 시행했다.
  • https://quest-bc.com/quest/zcCRqmz4SdtqWSO8EEhi
  • 노드 홍보

  • 「symbol-node.takagi-tech.com」
  • 이 도구를 사용하여 노드 보수의 75%를 씬 파티
  • 에 복원
  • 나머지 25%는 Symbol 관련 개발 및 기술 보도 집필 활동에 사용
  • 환원을 통해 효율적인 하마웨이를 만들어내고자 하는 여러분, 자신의 활동을 응원하는 여러분의 하마웨이 의뢰
  • 를 기대합니다.

    이 도구로 할 수 있는 일


    자신의 노드 의뢰인에게는'노드 보수의 000% 환원','최고일 때 상금으로 000XYM을 증정'등 하버드 스타에게 답례하는 작업이 자동으로 진행된다.
    구체적인 기능은 다음과 같다.
  • 지정된 범위의 블록 크기 및 우수한 주소로 송금
  • 송금 금액에 대해 노드 보수의 비율이나 절대치를 임의로 설정할 수 있다
  • 각 송금의 한도를 설정할 수 있으며, 절차가 이 금액을 초과한 송금을 진행할 때 송금 업무를 정지
  • 실제로는 송금하지 않지만, 어느 주소로 얼마를 송금하는지 미리 확인할 수 있는 베네치아 기능
  • 사전 준비


    운영 환경 준비


    Python3.7 이후에 symbol SDK를 설치합니다.
    pip install symbol-sdk-core-python
    

    다운로드 도구


    github 창고에서 다운로드하십시오.
    git에 익숙한 분들은 clone에서 사용하세요.
    git를 사용할 수 없는 사람은 아래 그림의 빨간 상자'Code->Download ZIP'에서 zip으로 다운로드하여 임의의 곳에서 해동하십시오.

    실행 도구


    설정 방법


    먼저 config.ini.example 서류를 복사하고 config.ini의 이름으로 변경한다.
    다음은 사용자의 노드 정보와 복원 규칙에 따라 파일의 설정 값을 변경하십시오.
    각 항목의 상세한 상황은 아래와 같다.
    변수 설정
    개요
    입력 값
    dryrun
    실제로 송금 처리를 하지 않는 확인 모드 false에서 실제 송금을 진행합니다.
    True or False
    private_key
    노드 보수를 받는 지갑의 비밀 열쇠
    영수 문자열
    limit_xym_amount
    1 송금한 최대 XYM 수량이 상기 송금을 검출한 경우 오른쪽 "50.0"의 처리를 중지한 경우 50XYM 이상 송금이 1건 이상인 경우 송금을 중지한다
    예) 50.0
    from_block_height
    객체의 블록 높이 최소값(블록 수 이상의 조끼를 객체로 복원)
    예) 40000
    to_block_height
    객체 블록 높이의 최대값을 복원합니다.0의 경우 최신 블록 높이(이 블록 수 이하의 조끼를 대상으로)
    예)50000
    autoupdate_from_block_height
    from_block_Height의 자동 업데이트 (지난번에 실행했을 때 가장 좋은 블록 높이 +1 업데이트)
    True or False
    fixed_kickback
    고정 복원 XYM 수(값이 0보다 크면 다음 kickback rate는 무시됨)
    예0예)30.0
    kickback_rate
    노드 보수의 환원율(fixed kickback이 0 이하일 때만 유효)(75% 환원 시 0.75)
    예)0.75
    max_txfee
    최대 복구 트랜잭션 수수료 XYM
    예) 1.0
    message
    트랜잭션에 포함된 정보를 복원합니다(#BLOCK#라는 단어는 최상의 블록 높이로 바뀝니다).
    예) node fee kickback [block:#BLOCK#]
    node
    하마트 환원 대상의 노드(이 노드에 의뢰한 하베스트의 하마트가 환원 대상이 된다)
    예)http://xxx.yyy.zzz:3000
    receipt_type_enum
    하드웨어의 시스템 상수(메인 네트워크의 경우 0x2133에서 변경할 필요가 없음)
    0x2143
    birth_time
    Symbol 탄생 UTC 초(메인넷의 경우 1615853185에서 변경되지 않음)
    1615853185
    exp_time
    거래의 유효기간 (단위는 hour. 오른쪽의 예는 2시간)
    예2
    mosaic_id
    XYM의 모자이크 ID(기본 네트워크의 경우 0x6BED 913FA202223F8에서 변경할 필요가 없음)
    0x6BED913FA20223F8

    설정 예


    '노드 보수의 50%를 자신의 노드 중 가장 우수한 사람에게 환원한다'는 설정은 다음과 같다.
    dryrun = False
    private_key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    limit_xym_amount = 30
    from_block_height = 470000
    to_block_height = 0
    autoupdate_from_block_height = True
    fixed_kickback = 0
    kickback_rate = 0.5
    max_txfee = 5
    message = !!!開発テスト!!! node fee kickback [#BLOCK#]
    node = http://symbol-node.takagi-tech.com:3000
    receipt_type_enum = 0x2143
    birth_time = 1615853185
    exp_time = 2
    mosaic_id = 0x6BED913FA20223F8
    
    또한autoupdate_from_block_height = True, 실행완료시from_block_height에 복원완료 후 블록 높이 +1을 설정했기 때문에 하루에 한 번만 정기적으로 자동으로 집행하면 매일 하마트에 대한 복원송금을 반복하지 않고 할 수 있다.

    실행 예

    python nodefee-kickback.py
    
    확인 모드dryrun = True에서 전항의 설정 예시를 실행할 때 출력은 다음과 같다.
    > python nodefee-kickback.py
    2021-09-05 01:41:31,300     INFO My public key: 10943DCA976F8C17433F759400B9AF0257D1B36E7D69859B31250039E771004D
    2021-09-05 01:41:31,300     INFO My wallet address: NDJIK24FC643NUR3TMJ5LXALE3ZHDEUNX2VLE4Y
    2021-09-05 01:41:35,512     INFO Harvesters address: 8
    2021-09-05 01:41:39,835     INFO Harvest history from height: 470000
    2021-09-05 01:41:39,835     INFO Harvest history to height: 0
    2021-09-05 01:41:39,836     INFO ### block height, harvest address, node fee amount ###
    2021-09-05 01:41:39,838     INFO ['490580', 'NCVQALLK55BPRMYEE4RTOFKDRTZEAQY63OW2FJA', '43.971249']
    2021-09-05 01:41:39,838     INFO ['484878', 'NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', '43.971249']
    2021-09-05 01:41:39,839     INFO ['481815', 'NDO4JAQV63NWMJRVYAPVT3ZM3EYCI7M5LV6YL5A', '43.972679']
    2021-09-05 01:41:39,840     INFO ['472798', 'NC6KUFYNSAJPGHSEKDU4F3DFP2IBWCOAID76NEQ', '44.221161']
    2021-09-05 01:41:39,841     INFO ['471447', 'NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', '43.971249']
    2021-09-05 01:41:39,841     INFO Kickback transactions
    2021-09-05 01:41:39,844     INFO ### target address, XYM amount, message ###
    2021-09-05 01:41:39,844     INFO ['NCVQALLK55BPRMYEE4RTOFKDRTZEAQY63OW2FJA', 21.985624, '!!!開発テスト!!! node fee kickback [490580]']
    2021-09-05 01:41:39,845     INFO ['NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', 21.985624, '!!!開発テスト!!! node fee kickback [484878]']
    2021-09-05 01:41:39,846     INFO ['NDO4JAQV63NWMJRVYAPVT3ZM3EYCI7M5LV6YL5A', 21.986339, '!!!開発テスト!!! node fee kickback [481815]']
    2021-09-05 01:41:39,846     INFO ['NC6KUFYNSAJPGHSEKDU4F3DFP2IBWCOAID76NEQ', 22.11058, '!!!開発テスト!!! node fee kickback [472798]']
    2021-09-05 01:41:39,847     INFO ['NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', 21.985624, '!!!開発テスト!!! node fee kickback [471447]']
    2021-09-05 01:41:39,849     INFO Total transfer XYM amount: 110.053791 + 5.0(Max fee)
    2021-09-05 01:41:39,849     INFO ドライランのため送金を行わずに処理を終了します (config.ini -> dryrun)
    
    블록 높이 470000 이후 5차례 하마트(이 하마웨이가 받은 노드 보수는 43.971249~44.221161 XYM)에 대해 각 하베스트에게 송금한 노드 보수의 50%(21.85624~22..11058XYM)의 목록을 확인했다.
    이 실행110.053791 + 5.0(Max fee)에서 최대 115XYM까지 송금할 수 있습니다.
    문제가 없는 것으로 확인되면dryrun = False 실제 송금 처리됩니다.
    (다음은 테스트를 위해 0.001XYM의 고정 복원fixed_kickback = 0.001을 통해 입금)
    > python nodefee-kickback.py
    2021-09-05 01:51:30,396     INFO My public key: 10943DCA976F8C17433F759400B9AF0257D1B36E7D69859B31250039E771004D
    2021-09-05 01:51:30,397     INFO My wallet address: NDJIK24FC643NUR3TMJ5LXALE3ZHDEUNX2VLE4Y
    2021-09-05 01:51:34,614     INFO Harvesters address: 8
    2021-09-05 01:51:39,004     INFO Harvest history from height: 470000
    2021-09-05 01:51:39,005     INFO Harvest history to height: 0
    2021-09-05 01:51:39,006     INFO ### block height, harvest address, node fee amount ###
    2021-09-05 01:51:39,007     INFO ['490580', 'NCVQALLK55BPRMYEE4RTOFKDRTZEAQY63OW2FJA', '43.971249']
    2021-09-05 01:51:39,007     INFO ['484878', 'NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', '43.971249']
    2021-09-05 01:51:39,008     INFO ['481815', 'NDO4JAQV63NWMJRVYAPVT3ZM3EYCI7M5LV6YL5A', '43.972679']
    2021-09-05 01:51:39,009     INFO ['472798', 'NC6KUFYNSAJPGHSEKDU4F3DFP2IBWCOAID76NEQ', '44.221161']
    2021-09-05 01:51:39,011     INFO ['471447', 'NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', '43.971249']
    2021-09-05 01:51:39,012     INFO Kickback transactions
    2021-09-05 01:51:39,012     INFO ### target address, XYM amount, message ###
    2021-09-05 01:51:39,013     INFO ['NCVQALLK55BPRMYEE4RTOFKDRTZEAQY63OW2FJA', 0.001, '!!!開発テスト!!! node fee kickback [490580]']
    2021-09-05 01:51:39,014     INFO ['NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', 0.001, '!!!開発テスト!!! node fee kickback [484878]']
    2021-09-05 01:51:39,014     INFO ['NDO4JAQV63NWMJRVYAPVT3ZM3EYCI7M5LV6YL5A', 0.001, '!!!開発テスト!!! node fee kickback [481815]']
    2021-09-05 01:51:39,015     INFO ['NC6KUFYNSAJPGHSEKDU4F3DFP2IBWCOAID76NEQ', 0.001, '!!!開発テスト!!! node fee kickback [472798]']
    2021-09-05 01:51:39,015     INFO ['NBWMZU7G7FUYOHVYEWOTKDYUX7KM6FNRBFFJU2Q', 0.001, '!!!開発テスト!!! node fee kickback [471447]']
    2021-09-05 01:51:39,016     INFO Total transfer XYM amount: 0.005 + 0.02(Max fee)
    2021-09-05 01:51:39,017     INFO Transaction hash: A92BE029BA9A0D5AAB87A4F6F7EB2F85DF007FAA5F0A7144CE7E9249382BA878
    2021-09-05 01:51:39,034     INFO Published : http://explorer.symbolblockchain.io/transactions/A92BE029BA9A0D5AAB87A4F6F7EB2F85DF007FAA5F0A7144CE7E9249382BA878
    2021-09-05 01:51:39,034     INFO from_block_height update to 490581
    2021-09-05 01:51:39,035     INFO Node fee kickback is completed
    
    출력딜 산열의 URL 확인.
    5건의 거래를 포함한 취합 거래로, 지갑도 환원 여부를 확인할 수 있다.
    from_block_height update to 490581의 출력과 같이 config.inifrom_block_height 항목이 업데이트되었고 직접 다시 실행하더라도 새로운 공파가 발생하지 않기 때문에 다음과 같은 오류로 끝납니다.
    > python nodefee-kickback.py
    2021-09-05 01:59:42,190     INFO My public key: 10943DCA976F8C17433F759400B9AF0257D1B36E7D69859B31250039E771004D
    2021-09-05 01:59:42,190     INFO My wallet address: NDJIK24FC643NUR3TMJ5LXALE3ZHDEUNX2VLE4Y
    2021-09-05 01:59:46,413     INFO Harvesters address: 8
    2021-09-05 01:59:50,640     INFO Harvest history from height: 490581
    2021-09-05 01:59:50,640     INFO Harvest history to height: 0
    2021-09-05 01:59:50,641     INFO ### block height, harvest address, node fee amount ###
    2021-09-05 01:59:50,642     INFO Kickback transactions
    2021-09-05 01:59:50,643     INFO ### target address, XYM amount, message ###
    2021-09-05 01:59:50,644     INFO Total transfer XYM amount: 0.0 + 0.02(Max fee)
    2021-09-05 01:59:50,644     INFO There is no transfer
    Traceback (most recent call last):
      File "nodefee-kickback.py", line 103, in <module>
        main()
      File "nodefee-kickback.py", line 81, in main
        raise Exception("送金対象がありません、送金処理を終了します")
    Exception: 送金対象がありません、送金処理を終了します
    
    정기 집행 절차를 통해 하마웨이가 발생했을 때 복원 처리가 정확하게 진행된다.

    자동 실행 정보


    Linux 계열cron 등의 경우 WindowsWindowsタスクスケジューラ 등록 등의 경우 복원 처리를 완전히 자동화할 수 있습니다.
    구체적인 설정 방법은 여기서 생략한다.

    실행 로그 정보


    프로그램이 실행될 때 출력된 정보는 그대로 logs 실행 날짜와 시간의 파일로 디렉터리에 출력됩니다.

    이 도구에 대한 라이센스 정보


    MIT License OSS로 공개.
    MIT License는 대충 말해요.
  • 변경, 재발포, 상업용, 유료 판매 모든 것을 무료로 사용할 수 있음
  • 단,'저작권 표시'와'MIT 허가증의 전문'을 기재해야 한다
  • MIT 라이센스 전문이 기재된 웹페이지의 URL이라도 OK
  • 이 프로그램의 경우 github의 허가증 파일 URL로 OK
  • 아무런 보증이 없고 만약에 손실이 발생하면 작가도 책임을 지지 않는다
  • 그렇습니다.
    허가증을 준수해서 사용할 수 있다면 문제없을 거예요. Twitter와 Qita로 통지해 주시면 기쁠 거예요.

    최후


    사용하고 싶지만 도입 방법을 잘 모르는 노드 운영자는 지원할 테니 마음대로 연락하세요Twitter.
    또 이러한 기능을 추가하고자 하는 생각과 오류를 발견한 사람은 댓글과Twitter에 연락 주세요.
    Symbol 커뮤니티가 자신의 활동에서 더욱 활발해지기를 바랍니다.

    좋은 웹페이지 즐겨찾기