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のシェアボタン設置方法

今日は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>';

16進数の文字列の復元

実装しようとした時になんだっけ~ってすぐに思い出せなかったので記事にしておきます。

PHPなら1行。

echo hex2bin('746573745F6869726162756E');

Javaなら9行くらい?

import javax.xml.bind.DatatypeConverter;

public class Main {
    public static void main(String[] args) {
        String decText = new String(
                DatatypeConverter.parseHexBinary("746573745F6869726162756E"));
        System.out.println(decText);
    }
}

出力はどちらも

test_hirabun