リモートでIOTAのペンディングTxをリアタッチする

Takeです。今日やることは本当にタイトル通りなんですけど。

以前、ペンディングになっているトランザクションを、リモートでリアタッチしようとしたんですね。そしたら、「attachToTangleコマンドはリモートからは受けつけんぞ。」と怒られたわけです。ほげー!hoge〜!驚いちゃいました。なかなかこういうちょっとしたことで詰まること多いじゃないですか。日本語情報が少ない場合、英語でサポートを受けるしかないですけど、インプットに母国語にくらべて時間がかかる。仕方ないんだけど!はぁ。あ、話逸れました。今日はリモートからAPIリクエストを飛ばしてペンティング中のトランザクションをTangleにリアタッチする話です。はじまりはじまり〜。

iri.iniのREMOTE_LIMIT_APIの値を変更する

はあ、もうタイトルで90%今日やることのシェアが完了した気がする(笑)
男は黙ってiri!いや、別に女でもいいんですけど。

さて、iri.iniを開きましょう。私の場合はZoranさんのコピペガイドでフルノードを立てたので、ファイル名がiota.iniになってましたけど、みなさんのファイル名に置き換えて考えてくださいな。あ、一応ですけど、「まだフルノードたててないの?」という煽りをさせて頂きます。簡単に立てられますので、関連記事をご覧ください。

IOTAフルノードコピペセットアップガイド

2018.01.11

まーた話が逸れた。
Anyway! 本題です。

[IRI]
PORT = 14265
UDP_RECEIVER_PORT = 14600
TCP_RECEIVER_PORT = 15600
API_HOST = 0.0.0.0
IXI_DIR = ixi
HEADLESS = true
DEBUG = false
TESTNET = false
DB_PATH = mainnetdb
RESCAN_DB = false

REMOTE_LIMIT_API = "removeNeighbors, addNeighbors, getNeighbors, interruptAttachingToTangle, attachToTangle, setApiRateLimit"

NEIGHBORS = udp://my.lovoable.neighbor1.com:14600 udp://my.lovoable.neighbor2.com:14600 udp://my.lovoable.neighbor3.com:14600

注目すべきは〜。はい、ここ!マダガスカル!あ、違った。REMOTE_LIMIT_APIです。

REMOTE_LIMIT_API = "removeNeighbors, addNeighbors, getNeighbors, interruptAttachingToTangle, attachToTangle, setApiRateLimit"

interruptAttachingToTangleattachToTangleをとっちゃいましょうか。

はい、ここ!トルクメニスタン!今日、絶好調だな。室内の温度すげー下がったけど。

リモートでペンディング中のトランザクションをTangleにリアタッチ

ペンディング中のトランザクションのハッシュ(PGO…)と下記のコードを用意しました。

from iota import *

api = Iota('http://takehogehoge.jp:14265')

#ペンディング中のトランザクションハッシュ
transaction = b'PGOJB9NNWCQ9LSCOHXCHXFFIKLYEG9RWZSBWLBVQLLLCQQIFQUQTGQYU9WCS9TISXBANZLFQKEIKZ9999'

#tangleの深さ。任意で決めてください。お勧めは3から13だそうです。
depth = 5

#リプレイバンドルコマンドでリアタッチします
print(api.replay_bundle(transaction, depth))

ということで、リモートのターミナルから実行してみましょう。
Enterをカッターン!

エラー事例1:COMMAND attachToTangle is not available on this node

iota.adapter.BadApiResponse: 
  401 response from node: 
    {u'duration': 3, 
     u'error':u'COMMAND attachToTangle is not available on this node'}

hoge〜!今アベイラブルにしたじゃーん!あ、そうか。再起動しないといけないのか〜。もう一度フルノードにSSH接続して再起動を試みます。

sudo service iota restart

しめしめ。これでうまくいくかな〜。わくわく。

エラー事例2:Failed to establish a new connection

requests.exceptions.ConnectionError: HTTPConnectionPool(host='takehogehoge.jp', port=14265): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe9f5809b90>: Failed to establish a new connection: [Errno 111] Connection refused',))

hoge〜!コネクションエラー?あ、そうか。新しくターミナル立ち上げてSSH接続したままだったわ。「同時に同じ端末から接続は禁止よ!」ってことなんでしょうね。おとなしく、SSH接続を終了します。

take:~/$ exit
logout
Connection takehogehoge.jp closed.

うふふ。これでええじゃろ。

エラー事例3:The subtangle has not been updated yet

iota.adapter.BadApiResponse: 400 response from node: This operations cannot be executed: The subtangle has not been updated yet.

hoge〜!サブタングルがアップデートされてないだと?はあ?監視ツール開くかぁ。普段iPadで監視しているので、iPadのスクショを載せます。

うわ!LSM(latestSolidSubtangleMilestoneIndex)LM(latestMilestoneIndex)の値が234000になってる!でも、私これ前にも遭遇してます。再起動するとしばらくこの値になるのが仕様のようです。以前は1時間ほど待ったところ、きちんと最新のマイルストーンと同じ値になってました。これは待ちですなぁ。

やっとこさ成功

LSMとLMが最新になったので、再挑戦!

すると、すると。レスポンスありました!

take:~/desktop$ python replay_bundle.py 
{u'trytes':
[TransactionTrytes('999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999DFTUYUHNOTNSNRSDQBUWRXJFVGZTOOJQIQUJYNMTEZPMHOAYTVAVKWSOXGNAWYLBCEPGEVKHFKFTMDMGDJ99999999999999999999999999REKE9ATTACH9TEST99999999999RG9GRYD99999999999B99999999WATTKVEPWCLLIXZWAT9GGR9BLSEHQWBWGJZBAQWFKXWFFGADPLAAUYQWRTBNHZTHKADLUHGVRITFZFHICBPJIPNNINWHU9RFARG9ELKVKHCAAQJDJBPRFWIJORXFMQAZQEXJF9PTLCQTBNLNNCYNPYUCGS9TAZ9999NCVVBWMFVKFPTTYFBHCROFSGANFBPI9DCFALMGJOEDBXYEWGRFAXWYTQIWWEHCXJRLTCJETWPKSZZ9999TAKE9ATTACH9TEST99999999999VOGXKZZJE999999999L99999999CAA9YYRZJZFPDB9EYHVNQXOASO9'), 
TransactionTrytes('JOJJ9VRITAE9CCZNFPXORWUEQ9YUWYZCXDHRZ9PCWTQQKKINVVRNVWVUJNTIVCOPZISEXB9DBFLMMWSGZN9LWWWEBIFWNNEOS9YSJACNPNJSSCKKKDDREGXLCRIPYKJOLTCTLHFAPSNNVHCSGJAPUVXFAABLIVWRJ9ZQRSFS9BFIGLHMBTSHSKJNMTZFFAWTFQWHNIWIBWKOSWWWMUVRIXIPFPYUZBGBAPQOXNHKDCEGETWZVGAHNJJVFTENUUCGZBMG9TWAFZDORGILEYBAUTRGIMMCUJICIRCPK9RMEJQFVYAGQEETTIUNJGSYOBJITVI9CPRVNWNPJGVXAXZMDLS9SKEAW9DQTYQYCZOOAHIWMCAIOYXYYFOLBSVUTBZYZGVTRVV9C9LAVVY9KY9TDDREGMKMNTQGDBUSJWEUJXVBVKURPCCHFXZXBIOHBYZBIBYYT9EVOXFAXXKRHUNT99JNXTOPPAGFQOGIFZQYRTJFUDUJTVFRWEHBQPRDBABDNURVMEJGCIXJCHVFUPBGDFYJJJRPNNPRBNPFXCEEHJKWHZZMNLWR9RCSC9CDPHCUEOHLIKOPGRJLFZGVKSUUWRFQVFOI9XU9GLARBQK9HLH9HHT9WHYD9MDJTBKSIYVVQCDNXPYDE9TGRIFVC9CSXNPGUCHWIHIJJ9ISJHKSUUOAGHPHMZKSEWQTKSZSD9FJAAJHMQVLFVQSANGZTEKNIXCI9MTPDUGBYLEGYDMYXTMCJJNNXYG9PSWJELXMWUV9CQOCSHWHPXWRMCQJTNZPLFEQAKRUUJEREXE9DVQYFWRTXXXIPHBPRJPCDTEFOHFVVRDGQHGTPGHUTBFQJWIXQKNHKHTJO9CKATCF9CXWVTESRNIUTB9FQFQAFPXMNBDCMIIPLOHHNZLPJBZEHECPZECUUDSAXXLWQTKBEMQWBHZPJNLHTKJUGOFUF9AUGTVB9PSPWSBPPEUXWUJJPYCWGLNXODIRL9GFZZCFXYJVXQJWKARRQCNIGIRTNWJMFUBDHVOGFXBYQGXMQG9DBRAWVDM9BMMWD9DESDARDTXRAMBQXREVCNCQXJINBJANUDJYCQBOSDXWH9EFGKGITWDIWZRKPXCPEALKIUHTXSMYLGUSAWKJPSJJ9FBWETUTRSUZALOUUJQJYFKPFLDKBQCQAH9YPRXN9CAUUMLWMQEQGPMAUXFQBP9HIYVJFHZQQNZREVKFVCIRFUUDYXQCAQIKGGTAAPDSMKPEN9SQZRFKTUZTGYGJXTNYLNVZVENWDLLPICZFWLJLYDBGWGZXDIDCOIBGXQP9DRACKYMPAWLJQCG9OIJIYIXHULOIIDDB9FDAVUJXGVTBWWJTKUIWSUFGYXVADRKEQFJJXBWOYTPUCUDGHWHHDBSPKISVJCTVLNDBPIZHV9NGPSHSQ9IWRPCTLYHQIIXNSWGN9ZOYCQGMBPDOLMOEFYXVRRSPCPZBARYYQPFWZPYKYCNCYLYALQQ9YIBFHQRQLFEXKPCSLTUJ9BBJLBHEVWGLUUZCTAHAPV9GRWYDAPHDFYKNYLVVHRAGAMDD9YOLTXITBITYSQ9JHPWFEGTIKOLSCZBWXBDINZABIYKXALAOGOBGQHCB9NUDVPMGJD9RRBGSJYYHDJTENTHHRIRIMUKXZGNRHW9DPKICTK9FONHG9KJJD9MFODXBBCB9OBCCIJRMDBGZCZZXAKWJCSAWCMZBFYSDWXNTCAZANJBZNSYGGNUAKXCGIGUSMSYQSIRQB9DRDDRIJSNIDROMJD9XWPJPUZBIHRKPTRMIYZGEKZDDZADLTRJMCWTAKNMPNFNTMNFSLTFFYDNIWMFNMG9NGNBJZETVW9ZVOICISJJESZDPJSAZVWBTSKMESAHNYWEUVULDPDSIWGZWVBWS9PRQNLUCCXBPXQDFHXQBAOHFROJORHTHPEJTUMGSKQRAFALGUWXKJOELERQS9GUFSBEOJVGQUNKFYJEKFTPMPULJWPCPOIGHKBPMCGPKAFJKM9FJRQXYZFZXBMKBWTBBAR9JOEHUBLDYQJQLHMN9IEJBURICHVWMGCFQDWJIJSHRL9VPMMEONJAGEYEPVPIGRWKJCKRUDJOLRAUHSZYGYFKFEIUYVOYY9CBUYLUNFOLNXFIWWFEESTUXXZDRROSEDVEVPZMRFIGRWBOBYQLQRQZMRGMYXOWKKLSMWROKODPOEER9MIHPRVCKSONBUMQIEQLHQOE9ZXSLQUVIODYEINBBDLMUF9LELARJYXMEXPCVUHVCQ99999999999999999999999999TAKE9ATTACH9TEST99999999999RG9GRYD99A99999999B99999999WATTKVEPWCLLIXZWAT9GGR9BLSEHQWBWGJZBAQWFKXWFFGADPLAAUYQWRTBNHZTHKADLUHGVRITFZFHICKARAEJRLFTZYQ9QCFUTXI9RITOLCFDYKGYNQBKJUCJUCWWZCCLLXJZOLOKCILMMTWQVPNZJJODNLA9999NCVVBWMFVKFPTTYFBHCROFSGANFBPI9DCFALMGJOEDBXYEWGRFAXWYTQIWWEHCXJRLTCJETWPKSZZ9999TAKE9ATTACH9TEST999999999999MWWKZZJE999999999L99999999LS9LVJUHFPJYGRARBBKCGZMFQGN'), 
TransactionTrytes('OCXARLPSVYQGBGUWVPEXAYHAIORIQZSTONNJUFMKISYLLAYKULYSMQSACQZJKBTELPVQGGHI9DMLYHZXDQM9GDRWCSWLMVZYAW9IX9BFWYLAMPI9CAZW9WNIACK9LDFDAOJKIXCFQWOTAJVGMZB9TFWXENFNMAMOZXUVAKICOTEIDWNIJHPNGPXQ9EHYMJLQIBQFZXGFLJYBYQXRNBLUWJVSHDMXMLBAVYSKGKA9UXFHLHHKLDC9DZVAOYWBRULKTPLXCYPAVKFOYLJTALOPTHMUNLZBOYBSDBGXYYRXMBIBSPRRDRWMFNKGEVWFKVUEUMQDEYRXDSDVYGAQKDOF9DOTHGUMCTSWVFYOLDOOAZMMVMKVOGVAGMLNVQWUVZRYNKRKXZIVGFTVFQQOLBZDCXODJZFKCEXUGUUIWDEKHGUQGDEONGXHPFENYNHEGNBYNLNJTLAGFHZRJVJWFOQJRCAHOCEQSSKBXOMQDCHUVTKQUVZKTLXDRGFAIKUCMWSJUVOJHFTEPMTCUNNSGDKLAFCAPDHYDHWRDJZVPER9UVKLNP9MFWTHMRABEIQQPDDTMAWQZMCHMDBPBLADVMVLQ9KNFCBNCHRVJGGBRWKNVPZJQLXUYSJIAUHKDYGFQIM9LTNVRMJBTNNHFPRDYBWBKYBKGLRHJSJKD9MDPYNNHGQIVYYYKOZOI9SH9VSFGKURTKQFWPMAIGJQ9B9OFIGBSGXEDNFWYPGWUUIP9YGZH9ZYJXJSFM9CZHRGIAXNOZKSNDDNWZQUFGJAPSSMMON9EYOVYRFSUQMIVPHPCUFDHDYXMOHZDFKRMOJPKUTAPBNYMADKICHSIB99BOPGL9VGQRDQJQVHPTXXNIQICHTRJVNSNOOXOBNKWXHTKOXRKEVEONXLNANDCUSVPZDEDCJTFWFZOWYJWMID9WLIJ9TBZKWJKBHRARNOWMXMVTEPPFHUGUBZBJI9SHUWW9DSXKKVLGRQRUMQLNDMXXI9GAGGLMCTVWVNDHANYXLMVAEUSXJBNZRMAPGTHOLZEHCBPPQ9SXIIXQGPCBXYIVGYUPOYODCPSMOVOOQHMGZCZXHLESKKHV9EOLPHRNHSURIVPKOWVNRJHDT9DRPS9TDWIMFWN9SZBXJQDKUHELDGXOOURDTMGLGLILKIJWOCYFOJSOMYWYTXLVTRJADTIWIGJUWIZLGMXNQP9IIWPJOYTSPRYPWXWRVQIVCWYPWVYJUTGW9BVT9YVPXDGFNKZDORMBXUKQBGYSBAPFLYTWEVPNPMKUOHJIGGLNJAGPEGKGMWIGOZJKTASKWHPZEXWMNVUCMABZDFYSGJALKAQVNWWAUZYBGDXIFJBAKFE9CJHNQHWKAXBLXKEFHALJKEWPVOTKONPHOAGXKJDEE9GSPIBGYIHEGJSTABZLLSD9PCAIVRGPVXYECTET9LKUGL9FRXVYWYJGYVZFBPSCVQYOQFRUT9VVWVIMWQLPVSBQRHSCZICHLGFJVRQDIUDSHEEOM9BTKSXIVWH9PJKRSOCAPYSYMR9MRJFBXHEPLWJIJBSLOLQM9TJTJCEYZGIYNMSIPALKLIZDICLEC9SSAURKWNSPYQEW9ZGMINM9WNCVRMQU9RWJIDLFDLQFAAQQSCZXNRAOEWNIRKQFWCPJAJMFJMLYXQYYIEIWDALTMCDKVENKMLIOHWDOH9GTEOXIUSWU9RXBUIZKJOGMWRCWFAHNLGZJXCHGZLGJQ9ENKAPOFRDUSTZPNNJ9TRDCFDPVFPPDXJJGXXONSVRXFSIOFXNYOKUSMYDJI9SAVTDOXFRXZCNWVJMNHXXSBHWGAEMGBUBIJJUPQ9IHVBVBW9T9NOIF9NQEMMNKHKGIBOEQWJSJCJVQFFQTMWGOATXHVQTIFRNVTEXGQNQDGDGZLRGFBT9GFSK9KINRFGCEJCPYBPGQVSUPQNZGXCMJWBOJY9BFAWUMPQZZTXB9JMMQFMUUENPGEOY9YACGATEOVK9NOVXRULRCQJPBNUW9YUQSIQ9ZVSIWRNYMKEWIMMEOSWWMPAEPPEPZH9JJTCDOFDVCIAWIZNYTRHDHFCEAJUGGHQBHLHCIRYSHSPPPUBBIDYRDTPBZWKEDQTHCJTCNPHCABTTLMSPVR9UTNNJKTUWORCGJVLQTOYGSJYXDIVKRLAZKGXVGVELJ9QXJGTOSPWXCHVIXWKKLSMWROKODPOEER9MIHPRVCKSONBUMQIEQLHQOE9ZXSLQUVIODYEINBBDLMUF9LELARJYXMEXPCVUHVC999999999999999999999999999TAKE9ATTACH9TEST99999999999RG9GRYD99B99999999B99999999WATTKVEPWCLLIXZWAT9GGR9BLSEHQWBWGJZBAQWFKXWFFGADPLAAUYQWRTBNHZTHKADLUHGVRITFZFHICNCVVBWMFVKFPTTYFBHCROFSGANFBPI9DCFALMGJOEDBXYEWGRFAXWYTQIWWEHCXJRLTCJETWPKSZZ9999STRQVAZRFBOHFHW9C9POKKQOYXAROILPUHFOJBJRVJQBQIIDLVLAYSQLOQSXONLWMKNQFJXYNEQMZ9999TAKE9ATTACH9TEST99999999999DTWVKZZJE999999999L99999999YXZAEFGLVUZMEICALLXLHBBTECF')]}

Bundleがどさっとまるごと返ってきました。リモートからのリアタッチ成功です!
トライトで返って来てるなぁ。本当はデコードしないといけないんだけど、面倒だからいいや!

ちゃんとリアタッチできているのか確認する

tangle explorerで見てみましょう。

まずはこちら。これはリアタッチする前の様子ですな。

そしてこちら。こちらはリアタッチ後ですな。
トランザクションが一つ増えてます。
リアタッチ成功です。

因みにライトウォレットではこんな感じ。

終わりに代えて

リモートでリアタッチするだけで結構時間かかりました(笑)でもこれで自分の貧弱PCのリソースを使わなくてもノードの方でリアタッチしてくれるわけですね。foo~!こりゃめでてぇなと。みなさんも是非やってみてくださいな!

リファレンス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です