シャミアの秘密分散を試してみる
シャミアの秘密分散法
(Shamir’s secret sharing)を、ethers.jsを使用して試してみます。以下は、シャミアの秘密分散法を実装するためのコード例です。
HugoのブログにでMermaidの図を埋め込む
このブログはHugo というブログフレームワークを使っていますが、ここにMermaid で図を簡単に埋め込む方法をご紹介します。これによって、プログラムのフローチャートやシーケンス図などを簡単に生成できるようになります。
EthereumのDeployerを特定する
Web3サービスでdeployerを調べる簡単な方法がないか実験してみました。deployerは、スマートコントラクトをデプロイした人のアドレスです。本記事では、Etherscan のAPIを使用して、コントラクトアドレスからdeployerを調べる方法を紹介します。
PythonでVOICEBOXを使ってずんだもんに喋らせてみよう
今日はPythonを使って、YouTubeでよく見かける人気キャラクター「ずんだもん」に喋ってもらいましょう。この記事では、VOICEBOX というすごいソフトウェアを使って、簡単にずんだもんの声を再現する方法をご紹介します。
チャットアプリの会話コンテキストリデューサー:Motörhead
AI を活用したチャットアプリの開発では、会話のコンテキストをどのようにプロンプトに含めるかが重要な課題です。 単純なチャットアプリでは、例えば直近 5 件分の会話をプロンプトに含めて AI の返答を自然にしたりします。
しかし、会話の中には文脈に関係ない情報が多く含まれていることがあります。これを効率的に削減するために、文脈の「要約」を AI で行い、それをプロンプトに含める方法があります。
Motörhead は、こういったチャットアプリの実装を代わりに行ってくれるツールです。
Lokiのデータを一定時間後に削除する
Grafana Loki はログ管理システムであり、大量のログデータを効果的に管理するために使用されます。しかし、Loki はログデータが膨大になるとストレージ領域を圧迫する可能性があります。そこで、一定期間ごとに Loki の古いログデータを削除する必要があります。本記事では、Bash シェルスクリプトを使用して Loki のログデータを削除する方法を説明します。
GnuPG: 公開鍵の有効期限を延長する方法
グラフノードのスケールアウト
何らかの理由によりThe Graph 等のhosted-serviceを使わずに自分でgraph-node を建てる場合、グラフノードのスケールアウトも正しく考慮する必要があります。スケールアウトできる構成を組まないと、Web3クライアントからリクエストが504(Gateway Timeout)になってしまう事態が頻発します。本稿では簡単に実現できるグラフノードのスケールアウトの方法をご紹介します。
Solidityオプティマイザはストレージ変数の変更を避けてくれるのか?
ブロックチェーン上のスマートコントラクトを開発するに当たって実行コストである「ガス代」を削減することは重要な事です。消費Gasを削減するためのいくつかの有名なトリック があるのですが、そのうちの一つに「ストレージ変数の変更を避ける(Avoid changing storage data)」というのがあります。
例えばUniswapV2のスマートコントラクトにはこんな感じでgas savingsのトリックが至る所に施されています。
自分でスマートコントラクトを書いたり、レビューしたりするときにはこの点常に気をつけているのですが、先日ふと「これあまりにも古典的なトリックなので、すでにSolidityのオプティマイザで解決されてるのでは?」と思い、最新のSolidityコンパイラ0.8.11で検証してみました。