概要
前回、symbolブロックチェーンのアグリゲートトランザクションについて書きました。このアグリゲートトランザクションは便利なんですが、1件でもアドレスに不備があると、うまくいきません。タイプミスやコピペミスだけでなく、アドレス自体に制限がかかっていて送れない場合があります。今回はアドレスの受信制限やコピペミスを判定する内容を記事にします。
環境・前提条件
windows10
Python 3.10.9
requests 2.28.2
beautifulsoup4 4.11.1
symbol-desktop-wallet 1.0.13
- 【コード(testnet_address_scan.py)】
ノードにアクセスして受信制限を調べます。
受信制限あり、受信制限なし、アドレス間違いの判定をしています。
まず、pythonのライブラリであるbeautifulsoup4のインストールをします。
pip install beautifulsoup4
import requests
from bs4 import BeautifulSoup
node = "https://sym-test-04.opening-line.jp:3001"
node_restrictions = "/restrictions/account/"
#アドレスリスト[address, amount, message]
check_addresses_list = [
["TAFQV**********X3L7Q2BPVONS3FLM6VM5QKHQ", 1, "dog" ],
["TA6US**********WUG5G7AEOMWVA4FYWO2EWM4I", 5, "cat"],
["TDTFC**********J353SR5VNMPXOBDEIVXYDXMQ", 7, "bird" ] ,
["TA22Z**********GLVSAFZ7CNR2TQIIWYVMTTVI", 9, "rat" ] ,
["TDTFC**********J353SR5VNMPXOBDEIVXYDXM-", 7, "bird" ]
]
for check_address in check_addresses_list:
address = check_address[0]
restrictions_url = str(node + node_restrictions + address)
get_html = requests.get(restrictions_url)
#ノードからの取得データをスクレイピング
soup = BeautifulSoup(get_html.content, "html.parser")
str_soup = str(soup)
if "ResourceNotFound" in str_soup:
print(address + " は受信制限無いよ!")
elif "accountRestrictions" in str_soup:
print(address + " は受信制限あるよ!!!!!")
elif "InvalidArgument" in str_soup:
print(address + " はアドレス違うかも!")
else:
print("チョットヨクワカラナイ。。。")
ターミナル出力
TAFQV**********X3L7Q2BPVONS3FLM6VM5QKHQ は受信制限無いよ!
TDTFC**********J353SR5VNMPXOBDEIVXYDXMQ は受信制限無いよ!
TA22Z**********GLVSAFZ7CNR2TQIIWYVMTTVI は受信制限あるよ!!!!!
TDTFC**********J353SR5VNMPXOBDEIVXYDXM- はアドレス違うかも!
コード(mainnet_address_scan.py)
node・check_addresses_list[]内のaddressを変えればmainnet用になります。
node = "mainnet node"
check_addresses_list = [["mainnet_address", "amount", "message"]]
一斉送信をする前に、試してみてはいかがでしょうか。
引用リンク
PythonでWebスクレイピングをやってみる
https://qiita.com/koichi_hiphopdream/items/f4b006159cdbf5e4ee30
Symbol documentation アカウント制限
https://docs.symbol.dev/concepts/account-restriction.html
Desktop wallet v1.0.13 リンク
https://github.com/symbol/desktop-wallet/releases
Catapult REST Endpoints (1.0.3)
https://symbol.github.io/symbol-openapi/v1.0.3/#tag/Restriction-Account-routes/operation/getAccountRestrictions
補足:ウォレットでの受信制限のかけ方
画像のように、受信制限をかけたいアドレスの右上にある+マークから追加します。
今回は特定のアドレスからしかトランザクションを受信しない方法です。
ウォレットのアカウント情報の画面のアカウント制限を選択します。
新規アドレス制限をクリック。
パスワードを入れ、署名すれば指定したアドレスのみからの受信しかしない設定に出来ます。