Webウォレット開発中なのですが【質問→告知】

議論・討論

17 Res. 9.8421571 MONA 4 Fav.

1 :きら五段錬士:2015/08/25 16:52:34 (9年前)  0.40369368MONA/4人

Webウォレット内のユーザーのMonacoinアドレスにMONAが(外部から)着金し、取引一覧を表示する際、どのように着金取引を処理するのが最適なのでしょう?
自分では以下の3手法を考えたのですが…
1. ユーザ間送受金、出金(=着金以外の)記録SQLと[coindのlisttransactionsをcategory==="receive"なフィルターにかけたもの]を混ぜ(マージ)、時刻でソートして表示(毎回両方呼び出すのは非効率…?)
2. cronなどで定期的に[coindのlisttransactionsをcategory==="receive"なフィルターにかけたもの]をSQLへ追加、アクセス時にはSQLのみソート(ORDER BY)呼び出しして表示(安定そうだが反映にタイムラグ。次回ジョブ実行時に重複判定に使うため最新取引のtxidを記憶しておく必要あり?)
3. walletnotifyなるものを使い、着金時にSQLへ即挿入。取引一覧アクセス時は同上(送金DDoSが可能なため危険?※)
http://askmona.org/1056#res_120 の名無し六段氏の意見より。今は修正されているかもしれません

ご教示願えないでしょうか?
出来ればmininput以下の着金(unspent?)はどう処理すれば良いのかを教えて頂けると助かります。

2 :きら五段錬士:2015/08/25 17:16:48 (9年前)  0MONA/0人

114114下さった方有難うございます。
一応、環境はUbuntu Apache/PHP5.4.x? MariaDB(MySQL5.x?互換)です。
詳しいバージョンは未だ調べていないため分かりませんが…

3 :makit五段錬士:2015/08/25 20:47:54 (9年前)  3.9MONA/1人

タイムリーに似たような処理を数時間前に書いたところだったんだけど
この書き込みでwalletnotifyとかblocknotifyの存在を知りましたorz

トリガー系の機能ありそうなのにAPIリファレンスで見つからないから諦めて
cron駆使して自力で実装したところだったのに(涙
情報ありがとうございます。

ちなみに送金DDosは プログラム側の工夫で簡単に回避できそうな気がするけど違うのかな?
例えばロックファイルでもつくって2プロセス目は前プロセスが終わるまでウェイトさせて
3プロセス目以降は起動できないようにする(起動後即終了)など。
あるいはblocknotifyならDDos不可能だし どうせ6confirm確認するなら
walletnotifyで即時反映する必要もないからblocknotifyで十分な気も・・・


あと1のcoindとDB混在させるのは面倒なだけだから全部一度DBに突っ込んでDB経由で表示した方が色々楽だと思います。

4 :きら五段錬士:2015/08/25 22:07:58 (9年前)  0MONA/0人

>>3
(もっと早く書いてれば助けになったのかも…?すみません)
確かに排他ロックを2つ使って、両方ともロック失敗時は終了、ロック出来れば登録処理→待機していた2番目を実行する場合は[(即時終了した)3番目以降が処理しようとしたもの]も調べて全て処理する…とすればwalletnotifyでも多重起動は防止できますね
有難うございます、walletnotifyやblocknotify(ブロック進行時にトリガー?)がどのような時にトリガーされるのか調べてから実装してみようと思います。。


他にも提案などがあれば是非お願いします。

5 :#faucet二段:2015/08/26 00:07:52 (9年前)  0MONA/0人

ちなみにアグリゲーションみたいなことって可能なの?
いろんなところでウォレット作ってて、一括して見たいんだよ。

みんなもアドレス複数持ってると思うけど、管理とかどうしてんの?

6 :アフロ六段範士:2015/08/26 00:58:34 (9年前)  0.00114114MONA/1人

取引所に預けっぱなし

7 :きら五段錬士:2015/08/26 10:34:43 (9年前)  0.00114114MONA/1人

>>5
複数のウェブウォレット、取引所の残高を合計して/各々の残高をを一画面で見たいということですよね?
その場合、一覧したい残高のある各サービスが残高取得API(※)を公開していれば実装も難しくはないのですが、そのAPIを使用できるのがZaifと、ここAsk Monaのみで…(一応、MPOSを採用しているプールも使用可能?)
APIを使わずログイン画面でのログインなども実装すればマイページから抽出するというのも出来なくはないのですが、APIのあるなしで数倍は難易度は変わると思います。
蛇足かもしれませんが、※API…プログラムが別のプログラムの情報を取得するために、プログラムで扱いやすくされた情報を取得できる方法。WebサイトならそのAPIも大抵はWebページ。Ask MonaのAPIはサイト末尾から調べられる。

管理、…自分はしていませんね()
何処に多く入っているか位は覚えているので、使いたいときはそこから移動する感じで;

8 :きら五段錬士:2015/08/26 20:00:08 (9年前)  0MONA/0人

をが二つ…誤字ってますね

9 :#faucet二段:2015/08/26 20:27:09 (9年前)  0MONA/0人

>>6-7
なるほどねぇ。
よくわかりました。

10 :きら五段錬士:2015/08/27 22:34:34 (9年前)  0.10114114MONA/2人

自分としてはこのスレを拙作サイトの告知(公開までは日誌など)も書き込むトピックとしたいのですが、大丈夫でしょうか?(Webプログラミングなどの質問、話題もOKのままで)


一応、今日まででこの状態。
PHPを5.3から5.4にアップデートするはずがphp.ini設定まで吹っ飛ばしました…

11 :テクノブレイカーW六段錬士:2015/09/10 00:27:17 (9年前)  0MONA/0人

既に解決済みかもしれませんが、入金確認はlistsinceblockを使用すると確実かと思います。

12 :きら五段錬士:2015/09/10 22:07:12 (9年前)  0MONA/0人

いえ、notify系は未だに実装できていません…

listsinceblockについて検索してみたのですが、やはり日本語での説明のあるページが無く、英語のものも自分の未熟な英語力では確実な理解ができません…もし良ければ、listsinceblockコマンドの使用法をお願いできないでしょうか?

13 :テクノブレイカーW六段錬士:2015/09/10 23:11:23 (9年前)  1.14114MONA/1人

「listsinceblock ブロックハッシュ 検証ブロック数」で呼び出すと、指定のブロック以降、自身のウォレットに影響するトランザクションが返ります。
(ブロック数からブロックハッシュを得るには「getblockhash ブロック数」)

listsinceblock "12856583cb4c3905623111fa84ebff3c1ad96fc4b4d881a539ea8328762810b8" 6

のように呼び出します。
「検証ブロック数」はlistsinceblockを呼び出したときに返る"lastblock" に影響します。
"lastblock" の値は「次回はこのブロックハッシュから調べてください」という意味で、最新のブロックから「検証ブロック数 - 1」のブロックのブロックハッシュが返ります。
例えば「検証ブロック数」に3を指定した場合、最新のブロックの2つ前のブロックハッシュが返ります。その結果、3つ前のブロックは次回からはチェックしない(=検証が終わった)事になります。

14 :テクノブレイカーW六段錬士:2015/09/10 23:18:33 (9年前)  4.2939MONA/1人



0.10.2.2のregtestでのサンプルです。
左のウォレットから右のウォレットにf8f201b923…のブロックで10MONA送金し、その後1ブロック進んだ状態です。
そこで、右のウォレットでf8f201b923…を指定し、listsinceblockを読んだ結果です。
検証ブロックに1を指定したので、lastblockは6eb1ae…のブロックハッシュが返ります。

これで任意のタイミングで前回からの更新分だけを調査することができます。

15 :きら五段錬士:2015/09/18 01:45:57 (9年前)  0MONA/0人

遅くなってしまいすみません、教えて頂きありがとうございます!
この機能も活用しつつ、開発を進めていこうと思います。

16 :きら五段錬士:2015/09/18 01:48:10 (9年前)  0MONA/0人

送金額などを色々と間違えてしまいすみません…

17 :きら五段錬士:2015/09/23 02:06:20 (9年前)  0MONA/0人

料金未払いで中旬止まった鯖を今更復活(´;ω;`)ブワッ
圧倒的な資金不足が…大きな夢見るだけじゃなく、簡単なもの作ってコンテンツ乞食した方が…(´・ω・`)

お気に入り

新規登録してMONAをもらえた

本サイトはAsk Mona 3.0に移行しましたが、登録すると昔のAsk Monaで遊ぶことができます。

新規登録ログイン