SymbolのHarvest委任者の残高を取得する

ざっくり手順

  1. Get the unlocked harvesting account public keys.
  2. Get accounts information
  3. Get accounts information
  4. 公開鍵からいつものアドレスへ

1.Get the unlocked harvesting account public keys.

Returns array of unlocked account public keys.

ロックされていないアカウントの公開鍵の配列を返します。
ロックされていないって表現がよくわからないのですが、委任ハーベスターのアカウントのPublic Keyを取得できます。

2.Get accounts information

Returns the account information for an array of accounts.

アカウントの配列のアカウント情報を返します。
ここで先ほど取得したPublic Keyを使用して全アカウントの情報を一発で取得します。
ただし、ここで取得されるのは、そもそもプロキシリモートアカウントの公開鍵で問い合わせをかけるので、プロキシリモートアカウントの情報になります。

3.Get accounts information

先ほど取得したアカウント情報から[supplementalPublicKeys]->[linked] -> [publicKey]を使用して再度アカウント情報を問い合わせます。

これで、委任者のアドレスや残高・インポータンススコアが取得できます。

4.公開鍵からいつものアドレスへ

みなさんご存じの通り、公開鍵があればアドレスは生成可能ですのでアドレスを生成します。
ちょっと汚いですが、こんな感じです。

        $networkTypeValueHex     = '68'; // 104 (main net)
        $publicKeyHashHex        = hash('sha3-256', hex2bin($publicKey));
        $ripemd160StepOneHashHex = hash('ripemd160',hex2bin($publicKeyHashHex));
        $versionPrefixedRipemd160HashHex = $networkTypeValueHex.$ripemd160StepOneHashHex;
        $stepThreeChecksum       = substr(hash('sha3-256', hex2bin($versionPrefixedRipemd160HashHex)),0,6);
        $concatStepThreeAndStepSix = $versionPrefixedRipemd160HashHex . $stepThreeChecksum;
        $address = hex2bin($concatStepThreeAndStepSix);
        return substr(Base32::encode($address), 0, 39);

Z.作ってみた-まりち様のハーベストアカウント

https://s-okada.org/S-Drive/marichNodeInfo.php

ジムツア報告テンプレート作成ツール

【ジムツア】歩いた歩数をTwitterでツイートすると仮想通貨SYMBOL/XYMが貰えるイベントがもらえるイベントをご存じでしょうか。
詳細は、 ESSAN本家のサイト をご一読ください。
下のページでは報告用のツイート(tweet)テンプレートを提供しております。

URL:https://s-okada.org/S-Tool/XYMTourTags.php

最近毎日報告しているのですが、あれ今日何日だっけ??ってなるので簡単にTweetを作りたくなったのがきっかけです。
『めんどう』は改善の第一歩です!

概要

1行目 ← 歩をつけて歩数を報告する行
本サイトでは「 歩 」のみを1行目にセットしてあるのでその前に歩数を入力します。
(補足事項)1,234 でも 1234 でもOKらしいです。
2行目以降 ← 自由記述欄(任意)

原則、ジムツアチャレンジのハッシュタグをデフォルトで入れてあります。
ラッキーなことに100分の1の確率でXYMが当選します。
最終行 ← 報告日に合わせてハッシュタグを設定します。
ハッシュタグは ジムツア + 和暦の年 + YY + MM です。
令和4年1月1日の場合 「 #ジムツア40101 」となります。

これは補足的な意味合いですが、歩いた翌日の23:59:59までに報告するルールになっています。
なので、当日分と前日分の報告用リンクしかご用意しておりません。

デポツア私は参加しておりませんが、デポツア参加される方も多いのでデポツア用もあります。

苦労した点

Twitter的にはシェアを目的にしており、勝手にURLを付けてしまったのを解消するのに苦労しました。
2行目とかに宣伝入れても良いのですが、そこは皆さんの自由という事でつけておりません。

類似した報告に 「#おは戦」← おはよう戦隊もありますが、現状のところ未対応です。
内容的にハッシュタグ作るロジックは容易いですがツイートの内容的にあまり利用しないという現状の判断になります。

情報セキュリティ勉強会(1)

高度技術者試験 午前の出題範囲を中心に勉強しています。


rootkit

侵入先のサーバなどで侵入を露見しにくくするために用いられるツール群である。侵入者がその都度自作するのではなく、事前に何者かによって作成されて流通している。

例)不正なプロセスを表示しない改造したpsコマンドと差し替えておく。サーバ管理者がpsコマンドを実行しても、不正なプログラムの存在に気が付かない可能性が高まる。


エクスプロイトコード

ソフトウェアやハードウェアの脆弱性はしばしば発見される。それを実際に利用できるようにするコード。作成目的はとはない。脆弱性の研究・検証目的のもの、悪用して攻撃する目的のものもある。


シャドーIT

個人利用のスマートフォンでSNSを利用しての業務連絡や会社が認めていないオンラインストレージを利用して業務のファイルをやり取りすることが挙げられる。放置すると、情報漏洩などのリスクが高まる。IT部門が業務に必要なサービスを選定し、管理下で利用させることが対策となる。


ブルートフォース攻撃

総当たり攻撃


セッションIDの固定化攻撃

悪意のあるものが正規のWEBサイトから取得したセッションIDを、利用者のWEBブラウザに送り込み、利用者がそのセッションIDでログインし、ログイン状態に変わった後、利用者に成りすます。


Man-in-the-Browser攻撃

マルウェアを仕掛けて置き、マルウェアはWEBブラウザの通信内容を監視する。何らかのデータを送信しようとした瞬間に、マルウェアが改ざんして送出する攻撃。

例)振込依頼をした際に、送付先の口座番号や振込金額を改ざんし、騙し取る。


DNSキャッシュポイズニング攻撃

キャッシュサーバのキャッシュを不正に書き換え、ホスト名に対して誤ったIPアドレスを応答させる。利用者のアクセスを不正なサイトに誘導する攻撃。


Smurf攻撃

ICMP(Internet Control Message Protcol)はネットワーク制御用のプロトコル。これを利用したツールとしてpingやtracerouteがある。

送信元のIPアドレスを偽装した場合、pingの応答は偽装されたIP(攻撃先)宛に届いてしまう。

ブロードキャストアドレスや多数のコンピュータに向けてpingを実行することで攻撃対象のコンピュータに応答が殺到する。トラフィックの増加やサーバダウンなどサービスが妨害される。

このプログラムの名称がSmurfだったことからこの名がある。


水飲み場型攻撃

標的組織の従業員が頻繁にアクセスするWEBサイトに攻撃コードを埋め込み、標的組織の従業員がアクセスしたときだけ攻撃が行われるようにする。


やり取り型攻撃

事務連絡などのやり取りを何度か行う事により、標的組織の従業員の気を緩める。信用させた後、攻撃コードを含む実行ファイルを電子メールにて送付する。


ゼロデイ攻撃

セキュリティパッチが提供される前にパッチが対象とする脆弱性を攻撃する。


サイドチャネル攻撃

暗号アルゴリズムを実装した攻撃対象の物理デバイスから得られる物理量(処理時間や消費電力など)やエラーメッセージから攻撃対象の機密情報を得る。


ダウングレード攻撃(SSL/TLS)

暗号通信を確立する際に、弱い暗号スイートを強制することで解読しやすい暗号通信を行わせる。

日時ー形式変換ツール

なんて表現すればよいか忘れたんだけどISO8601形式に時刻を変換する必要があったのでちょっとしたツールにしました。

HTML5のinput type=”date”って非常に便利ですよね。

2022-03-31T15:00:00.000Z ←の形式を作りたかっただけなんですけど

https://s-okada.org/S-Tool/TimeFormat.php

ISO8601 とは

国際標準化機構(ISO)の国際規格です。

普段目にする表現として [ yyyy-MM-dd HH:mm:ss ]とか[yyyy/MM/dd HH:mm:ss ]、場合によっては [yyyy年M月d日 午前h時m分s秒]とか0埋めされてるん??とか色々あると思うのですがそんな日付と時間の記述方式を標準化しているのがISO8601です。

国内であれば、割となじみのあるレイアウトでEDIやAPIを用意してくれてたりもするかと思いますが、なかなかグローバルな世の中になってきて、和暦??何それ、仏歴??何それ、
西4年月日(一般的かは知らんけどYYYYMMDD)みたいに困ってしまうわけですね。

大丈夫です。弊社のAPI ISO8601です。← なんだそりゃ??ってならないんで。

日付+時間の項目があったらISO8601形式にしておくことを強く勧めます。

パスワード生成ツール(1)

自分が欲しい仕様でランダムパスワード生成用のツールを作りました。

必要なものを探すより、作った方が早いと思う今日この頃…

Password作成の仕様
下記の51文字種からランダムな文字列を生成します。
英小文字:abcdefghijknmopqrstwxyz
英大文字:ABCEFGHJKLNMPQRSTUVWXY
数字:345689

l,u,v,D,I,O,Z,0,1,2,7は未使用です。

https://s-okada.org/S-Tool/CRP.php

SymbolのRestGWを使ってみる[Search transaction statements]

SymbolのRestGWを利用してみる。一通り使ってみよう第3弾!

[Receipt routes]-[Search transaction statements]を使ってみる!

作ってみたのはこちら!

https://s-okada.org/S-Drive/symbolBlocksRecent.php

上記のページからHeightのリンクをクリックするとなんちゃっての詳細画面に遷移します。その中に取得したReceiptの内容を表示してみました。

ブロック詳細として、完成度はまだ低いですが一応公開です。

Twitterのシェアボタン設置方法

今日はTwitterのシェアボタンを自作した件について記載します。

経緯と目的

毎日投稿を始めた Symbol Fee状況ですが、正直言って転記するのがメンドい。というか、2日目にして、心が折れそう。メンドいことは、ツール化するなり、自動化するのが世の常。

成果

ワンクリック作業に変更されました。(そもそも、自分で見たいのでBOT化するつもりはありません)

出来上がったのがコチラ!

情報共有と備忘録

①PHPのurlencodeでは、変換結果が使いにくい。

半角空白は[%20]へ変換してほしいのだが、[+]に変換なさる。。。(今回は%20にしたいので、str_replaceで再変換。

②Twitterの文章を改行したいときは[%0a]でできる。

改行の変換もstr_replaceで再変換。

③最低限のことだけメモするとこんな感じ

echo '<a href="//twitter.com/share';
echo '?url='.$dataUrl;
echo '&text='.$dataTxt;
echo '" class="twitter-share-button" data-lang="en">Tweet</a>';

Symbol Node List

SymbolのNodeをリスト化しました。対象は[Peer Api node],[Peer Api Voting node]のみです。

今回利用したのは、NodeRoutesのRestGWです。

  1. Get peers information でサーバの情報を取得
  2. 取得したサーバの情報からさらにGet peers informationをして探索を繰り返します。
  3. 取得したサーバ情報に対して、[Get the node health information]や[Get the node information]等を利用して情報を付与しています。

https://s-okada.org/S-Drive/symbolNodeList.php

概算では、更新頻度は1回/1日程度になるのではないかと思っております。(私のレンタルサーバの限界)

最新のブロック高については、最終確認時間の早いものから順に追いかけています。(ところてん方式で抜けていき、更新された際には再度上位にやってくる)

Symbol Fee Chart Summary

Symbol Fee のサマリ機能を追加しました。

全期間(2021/03/16~)のFeeを1日単位の合計金額にしてグラフ化しています。

また、全期間だけだと見にくいために直近31日分も別のグラフにしています。

https://s-okada.org/S-Drive/symbolFeeChartSummary.php

体験談

レンタルサーバの仕様でバッチ処理30秒以上出来ないお約束なので、108万ブロックの情報舐めるのに約3日ほどかかりました。気長に、仕込んだcronが5分単位で動くので増えていくことを眺める日々でした。レンタルサーバで今後新規に同じことしようとすると、なかなかシンドイデスネ。

改めてFeeをみると

2022年02月07日

2022年02月08日

上記2日ってすっごいトランザクションですね。

Symbol fee状況(2022-03-24)

SymbolのNodeを支えるハーベスティングには現在2つの要素からなります。

1つは、手数料(Fee)・・・トランザクションを承認してもらうための手数料

もう1つは、インフレーション・・・Nodeを維持するために設けられた報酬(徐々に減っていく)

手数料を見れば、どれだけ活発にSymbolが利用されているかが分かるのではと、グラフにしてみました。

現在、最新のブロックを追いかけつつ、過去のブロックの情報を取集中です。

2022-03-24の状況

https://s-okada.org/S-Drive/symbolFeeChart.php?date=2022/03/24

合計Fee:1343.446446 xym

平均Fee:0.467286 xym

最大Fee:28.7496 xym