connecting...
Google translation for articles :

【モザガチャの道2】好きさんの記事を読み解く 

nem0.00xem (0) 72 0 0

文字理解2 

※独自解読のみですので、本来のプログラムメモとは異なりますのでご了承ください。

 

パターン1 

(投げnemを受けるアドレスとモザイクを返送するのは同じアドレス)

outgoingからtenplastidを作成する

 

 

    node  = random.choice(("http://alice2.nem.ninja:7890",\ //指定したノードアドレスからランダムでノードを選びます//
   "http://alice3.nem.ninja:7890","http://alice4.nem.ninja:7890",\
   "http://alice5.nem.ninja:7890","http://alice6.nem.ninja:7890",\
   "http://alice7.nem.ninja:7890"));

    api = '/account/transfers/outgoing'  //api(アプリケーションプログラミングインターフェースからプログラムを呼び出します!//
    parameter = 'address=投げ返すアドレス' //パラメータを定義します!投げ返すアドレスとは//
    url = str(node + api + '?' + parameter) //ネット上の情報源はノードアドレスと?と投げ返すアドレスです!//
    ro = requests.get(url).json() //読み込み=URL で指定したファイルの送信を要求します。ジャバスクリプトから//

    for n in  range(0,1):  //0.1の範囲からnを出力します//
        print(n)
    print('id:{}'.format(dataout[n]['meta']['id'])) //Idの表示形式をデータアウトして表示します//
            templastid = ('{}'.format(dataout[0]['meta']['id'])) 
    print(templastid)

indomingから送られてきたトランザクションの履歴をみる

node = 上と同じようにランダムで選ぶ

    api = '/account/transfers/incoming'  //api(アプリケーションプログラミングインターフェースからプログラムを呼び出します!//
    parameter = 'address=投げ返すアドレス'   //パラメータを定義します!投げ返すアドレスとは//

    url = str(node + api + '?' + parameter ) //ネット上の情報源はノードアドレスと?と投げ返すアドレスです!//
    ri = requests.get(url).json()//読み込み=URL で指定したファイルの送信を要求します。ジャバスクリプトから//

そのままtemplastidのデータ保持で次の処理へ

idによる振り分け 前回のIDより小さい場合は次へ
1回では25件の検査になるので足りなけれなdata2[0]を引数にしてincomingを取る(未対応)

    max = len(ri) //最大はレン関数によります//
    for n in range(0,max): //o.maxの範囲から//
         time.sleep(3)  //??3カウント待つ??//
         print(n) //nを出力してください//
         print('id:{}'.format(data2[n]['meta']['id']))  //idの値はデータ2のmeta idから導きます//
         if '{}'.format(data2[n]['meta']['id']) > templastid: //もしtemplastidよりも大きい値だった場合//
              print('there is new data!')  //there is new data!の値にしてください//
              print('id:{}'.format(data2[n]['meta']['id']) + /  //idの値はデータ2のmeta idから導き、p-keyの値をtransaction,signerから導きだしてください//
              '  p-key:{}'.format(data2[n]['transaction']['signer']))

p-keyからアドレスを引く 

   node  = random.choice(("http://alice2.nem.ninja:7890",\
   "http://alice3.nem.ninja:7890","http://alice4.nem.ninja:7890",\
   "http://alice5.nem.ninja:7890","http://alice6.nem.ninja:7890",\
   "http://alice7.nem.ninja:7890")); //ノードをalice2,alice3,alice5,alice6,alice7からランダムで選んでください//
              api = '/account/get/from-public-key?' //APIは/account/get/from-public-key?から引用してください//
              pkey = ('{}'.format(data2[n]['transaction']['signer'])) //パブリックキーは data2のトランザクションとsignerから選んでください//
     url = str(node + api + 'publicKey=' + pkey) //webAPIへのアクセス方法は(node + api + 'publicKey=' + pkey)となります//
              q = requests.get(url).json() // qはジャバスクリプトのurlから得てください。//
              print('address: {}'.format(q['account']['address'])) //アドレスの値を返します。(qは['account']['address']参照)
     adddata = ("{}".format(q['account']['address'])) //コミットしたいデータ(adddata)はqです//

トランザクション用のデータを作成するルーチン(関数)を呼んで終了

        mkdata-fromjson  //ジャバスクリプトのデータを引用します//

これでガチャをしているアドレスにモザイクを送ってもらってモザイクを送り返す説明は終了です

パターン2 

投げNEMはモザイクを配りたい人が作成して秘密鍵など保守してるアドレスA
モザイクはガチャ専用アドレスBに送ってもらってそこから返送
ガチャ返送アドレスBの管理は私がしています(秘密鍵を持っている)

私はアドレスAに関しては何の権限も持っていません

この前提で作ったプログラムです

outgoingからtemplastidを作成する

    node  = random.choice(("http://alice2.nem.ninja:7890",\
   "http://alice3.nem.ninja:7890","http://alice4.nem.ninja:7890",\
   "http://alice5.nem.ninja:7890","http://alice6.nem.ninja:7890",\
   "http://alice7.nem.ninja:7890")); //alice2,alice3,alice4,alice5,alice6,alice7からランダムでノードをえらんでください//
    api = '/account/transfers/outgoing' //APIはaccount/transfers/outgoingを使ってください//
    parameter = 'address=モザイクを預かって送り返すためのアドレスB' 
    url = str(node + api + '?' + parameter) //WEB引用は(node+api+?+prameter)です//
    ro = requests.get(url).json() //ジャバスクリプトからroの値を得てください//

    for n in  range(0,1):
        print(n)
    print('id:{}'.format(dataout[n]['meta']['id']))
            templastid = ('{}'.format(dataout[0]['meta']['id']))
    print(templastid)

indomingからトランザクションの履歴をみる

    node  = random.choice(("http://alice2.nem.ninja:7890",\
   "http://alice3.nem.ninja:7890","http://alice4.nem.ninja:7890",\
   "http://alice5.nem.ninja:7890","http://alice6.nem.ninja:7890",\
   "http://alice7.nem.ninja:7890"));//alice2,alice3,alice4,alice5,alice6,alice7からランダムでノードをえらんでください//
    api = '/account/transfers/incoming'//APIはaccount/transfers/outgoingを使ってください//
    parameter = 'address=モザイクを投票してもらうアドレスA' 

    url = str(node + api + '?' + parameter )//WEB引用は(node+api+?+prameter)です//
    ri = requests.get(url).json()//ジャバスクリプトからriの値を得てください//

そのままtemplastidのデータ保持で次の工程へ

あとはパターン1と同じ処理になります

パターン1と2で違うところ

モザイク配りたい人にモザイク返送サービスを提供
まったく別のアドレスでサービスの提供をします

パターン3

追加機能

同じネームスペースにmosaicが6つあります
上記のようにもざいくを投げる場合毎回同じではおもしろくないしガチャになっていません
そのため所持しているモザイクのうちどれかを投げるにはポストするデータのモザイクを記載してる部分を乱数でかき分けてやりますそのためのルーチンです

普通の記載

 "mosaics":[
            {
                "mosaicId":{
                    "namespaceId": "kishuu",
                    "name": "mikan"   
                },
                "quantity": 10
            }
//mosaicIdは"namespaceId": "kishuu", "name": "mikan" です。データ量は10となります//

乱数で置き換える場合

mosaicr = random.choice(("ume","mikon","jidori","55mangoku","kishuuinu","odori"))//random.choice=ランダムに選んでね//
print(mosaicr)//ランダムで選んだmosaicrを出力して!//


param=.
      .
      .


"mosaics":[
            {
                "mosaicId":{
                    "namespaceId": "kishuu",
                    "name": mosaicr   //上記2行はnemespaceId=モザイクの1段目の名前でneme:mosaicrはネームスペースの下に紐図けられた名前である。//
                },
                "quantity": 10
            }

おまけ 

モザイクの状況を知りたい場合 知りたいアドレスを入れて実行してみてください

この結果を加工すると、いろいろモザイクを持っている状態で相手に対するアクションを変えることができます

import json //ジャバスクリプトを読み込みます//
import requests//リクエストを読み込みます//

node  = random.choice(("http://alice2.nem.ninja:7890",\
"http://alice3.nem.ninja:7890","http://alice4.nem.ninja:7890",\
"http://alice5.nem.ninja:7890","http://alice6.nem.ninja:7890",\
"http://alice7.nem.ninja:7890"));//alice2.alice3,alice4,alice5,alice6,alice7をランダムで選んでください//
api = '/account/mosaic/owned' //APIはaccount/mosaic/ownedを使用します//
parameter = 'address=知りたいアドレス'//アドレスをparameterと定義します//
url = str(node + api + '?' + parameter )//urlはnode+api+?+parameterを参照してください//

print(url)//urlの値を返します//
r = requests.get(url).json()//rはジャバスクリプトのから定義します//
print(json.dumps(r,indent=4))//4段下げてrを出力してください//

p = r['data']//pはdataで定義します//

print(json.dumps(p,indent=4)) //4段下げてpを出力してください//

max = len(p)//最大値はlen関数のPです//

print('max =',max)//maxの値を出力してください//

for n in range(0,max)://nは(0,maxの間から定義されます//
        mosaic_data = 'mosaicid:{}'.format(p[n]['mosaicId']['namespaceId'])
        mosaic_name = 'mosaicid:{}'.format(p[n]['mosaicId']['name'])
        number = 'number:{}'.format(p[n]['quantity'])
        print('no.',n)
        print('mosaic_data',mosaic_data)a//上記計算式よりmosaic_dataの値を出力してください//
        print('mosaic_name',mosaic_name)//上記計算式よりmosaic_nameの値を出力してください//
        print('number',number)//上記計算式よりnumberの値を出力してください//

 

参照辞典:https://docs.pyq.jp/index.html

     http://e-words.jp/

 

解らないところも多いですが、何となく法則みたいなものがあるようです。

所感としては、剣と魔法の世界で魔術辞典を利用して魔法を分析しているようなワクワク感がありますね。(そんな世界に転生したことはありませんが。)

文字の羅列が、実際にPC上で動くって魔法の世界ですよね。これは面白いと思います。

なんか、謎の法則にのっとって正確にワードを唱えると発動する!的な。

凄い人になると同じ動きでも書く行数が少なくなるという事は短縮魔法が使えるという事ですね。

やっぱ技術者ってすごいなあ。PCは魔道具で、ネット環境は世界を司るエレメントといったところかな。いや面白い。

Why don't you get crypt currency 'nem' by posting your blog article?

nemlog is blog posting service which has donation feature by crypt currency nem.
nemlog was launched to create environment which can be donated nem among NEMbers via blog articles.
Let's get nem by posting good blogs.

Nem prize event is being held frequently, Please join us on this opportunity!

nemlog registration from here
Register

NEMber who posted this article

技術見習いの見習いアカウント
イベント理事
37495
0