ソフトウェアの先行技術を証明する方法:開発者向けガイド
ソフトウェアの先行技術を証明することは、1つの正確な問いに帰着します。特定のGitコミットが特定の日付に存在したことを、内部サーバー、リポジトリ管理者、または第三者の誰にも変更できない証拠とともに示せるかどうかです。このガイドでは、ソースコードを公開することなく、その証拠を作成する方法を正確に説明します。
使用するのはTimestamp GITです。これは、OpenTimestampsプロトコルを介してGitコミットハッシュをBitcoinブロックチェーンにアンカーするマネージドサービス兼GitHub Appです。ワークフローは、一度インストールし、通常どおりコミットし、自動化された夜間アンカーによって不変の.otsレシートファイルを生成するだけです。
このガイドを読み終えると、次のことができるようになります。
- 保護したいリポジトリにGitHub Appをインストールする。
- 暗号学的証明の配信先を設定する。
- 実際のコミットに対してBitcoinアンカーされたタイムスタンプをトリガーし、確認する。
- 公開ダッシュボードとバッジを通じて証明を検証する。
- 最も一般的な権限と配信の問題をトラブルシューティングする。
前提条件
始める前に、以下を確認してください。
- GitHubアカウントと、保護したいリポジトリが少なくとも1つあること。
- Gitコミットとハッシュに関する基本的な知識。暗号学やブロックチェーンの経験は不要です。
- Timestamp GITアカウント。公開リポジトリは無料プラン、プライベートリポジトリは月額49ドルのPro Agencyプランまたは月額199ドルのEnterprise ZKが必要です。
- 任意:エアギャップ環境またはエンタープライズ環境でTimestamp GITをセルフホストする予定がある場合はDocker。
ステップバイステップ:Timestamp GITのセットアップ
マネージドパスでは、開発マシンに何もインストールする必要はありません。GitHub Appを一度インストールし、リポジトリを選択するだけで、すべてのコミットが毎晩自動的にBitcoinにアンカーされます。
ステップ1:サインアップしてGitHubに接続する
Timestamp GITにアクセスし、GitHubアカウントでサインインします。マネージドSaaSフローがデフォルトのパスです。
セルフホスティングする場合は、Docker Composeクイックスタートから始めます。
services:
timestampgit:
image: rue1401/timestampgit:prod
ports:
- "8080:8080"
volumes:
- ./data:/app/data
restart: unless-stopped
valkey:
image: valkey/valkey:8
restart: unless-stopped
次に、以下を実行します。
docker compose pull
docker compose up -d
docker compose logs -f timestampgit
セルフホストアプリはhttp://localhost:8080で利用できます。初回起動時には、セットアップウィザードがGitHub Appの接続とライセンスファイルの適用を案内します。
ステップ2:Timestamp GIT GitHub Appをインストールする
保護したいリポジトリにGitHub Appをインストールします。
標準モードでは、Timestamp GITはソースリポジトリへの読み取り専用アクセスが必要です。これはコードを読むためではなく、HEADコミットハッシュのみを読むためですが、GitHubの権限システムがハッシュのみのアクセスレベルを公開していないためです。
証明が別のターゲットリポジトリに配信される場合、アプリはそのターゲットリポジトリへの読み書きアクセスも必要です。
ステップ3:監視するリポジトリを選択する
Timestamp GITダッシュボードからYour Repositoriesページを開き、監視したいリポジトリを選択します。
選択された各リポジトリは、夜間証明パイプラインに追加されます。Timestamp GITは、アンカーに必要なコミットハッシュ以外のファイル内容、ソースコード、ブランチ内容を検査しません。
ステップ4:証明の配信を設定する
監視対象の各リポジトリについて、暗号学的証明を書き込む場所を選択します。
- 同じリポジトリ内の専用タイムスタンプブランチ。
- 別のシャドウリポジトリ。ソースリポジトリが公開でもプライベートにできます。
Timestamp GITは、毎日のアンカーが確認された後、マニフェストファイルと.otsレシートをその場所に書き込みます。
ステップ5:任意:Enterprise ZKモードを有効にする
ソースコードへのゼロアクセスを必要とするチームには、Enterprise ZKモードがより強力なデプロイメントモデルです。
セットアップ中に、Timestamp GITは12行のGitHub Actionワークフローを生成します。生成されたファイルをリポジトリの以下に追加します。
.github/workflows/timestampgit.yml
アクションはTimestamp GITのシステムではなく、独自のインフラストラクチャ上で実行されます。コミットハッシュのみをTimestamp GIT APIにプッシュします。このモードでは、Timestamp GITはソースリポジトリへの読み取りアクセスを一切必要とせず、証明が配信されるターゲットリポジトリへの読み書きアクセスのみが必要です。
ステップ6:コミットしてプロセスをトリガーする
監視が設定されたら、通常どおりコミットしてプッシュします。
git add .
git commit -m "feat: add payment webhook handler"
git push origin main
標準モードでは、GitHub Appが新しいHEADコミットハッシュを自動的に検出します。Enterprise ZKモードでは、GitHub ActionがCI環境からハッシュを送信します。
ステップ7:夜間のBitcoinアンカーを待つ
Timestamp GITは、保留中のコミットハッシュをインメモリキューにバッチ処理します。毎晩、ワーカーが以下を実行します。
- リポジトリごとに保留中のハッシュをグループ化する。
- 日次マニフェストファイルを作成する。
- コミットハッシュからMerkleツリーを構築する。
- 公開OTSカレンダーを使用してOpenTimestamps証明を作成する。
- MerkleルートをBitcoinブロックチェーンにアンカーする。
Bitcoinの確認には通常約3時間かかります。確認後、マニフェストと.otsレシートファイルが設定済みのタイムスタンプブランチまたはシャドウリポジトリにプッシュされます。
動作したことを確認する方法
夜間実行が完了したら、いくつかの方法で証明を検証できます。
1. タイムスタンプブランチを検査する
タイムスタンプブランチをフェッチし、マニフェストファイルと.otsレシートが存在することを確認します。
git fetch origin timestamps
git ls-tree -r --name-only origin/timestamps | head
正確なブランチ名は設定によって異なりますが、重要なシグナルは、日次マニフェストデータとペアになった.otsファイルの存在です。
2. 公開検証ページを使用する
Timestamp GITは、すべてのMerkleチェーン計算がブラウザ内でローカルに実行されるブラウザベースの検証ページを提供します。
https://timestampgit.dev/verification/{user}/{repo}/{date}
{user}、{repo}、{date}を、検証したいリポジトリと日付に置き換えます。
3. ステータスAPIを確認する
公開ステータスエンドポイントを通じて、最新のアンカーされたBitcoinブロックを確認できます。
curl https://timestampgit.dev/api/statusLast/acme/widget-api
レスポンスには、リポジトリの最後にアンカーされたBitcoinブロック情報が含まれます。
4. PDF証明書をダウンロードする
特定の日について、以下からPDF証明書をダウンロードします。
https://timestampgit.dev/api/report/{user}/{repo}/{date}
リポジトリの監査台帳はCSVとしても利用できます。
https://timestampgit.dev/api/audit/{user}/{repo}
5. 検証バッジを埋め込む
Timestamp GITダッシュボードは、README用のバッジURLとコピー&ペースト用Markdownスニペットを提供します。プライベートリポジトリでは、暗号化されたHMACがバッジURLに付加されるため、許可された閲覧者のみがステータス情報を見ることができます。
バッジは、誰でも証明を検査できる公開検証ページにリンクします。.otsファイル自体は標準のOpenTimestampsレシートのままなので、技術監査人はそれをダウンロードし、標準のOpenTimestampsツールを使用してBitcoinブロックチェーンに対して独立して検証することもできます。
一般的な問題のトラブルシューティング
24時間経っても証明が生成されない
GitHub Appの権限を確認してください。標準モードでは、ソースリポジトリへの少なくとも読み取り専用アクセスが必要です。また、リポジトリがTimestamp GITダッシュボードで引き続き選択されていることも確認してください。
プライベートリポジトリのステータスが表示されない
プライベートリポジトリはHMAC署名付きURLを使用します。バッジまたはステータスリンクがTimestamp GITダッシュボードから取得され、HMACパラメータが含まれていることを確認してください。HMACは、それを生成したサーバーインスタンスに固有です。
Enterprise ZKアクションが証明を配信しない
生成されたワークフローファイルが.github/workflows/timestampgit.ymlに存在し、GitHub Actionがリポジトリにインストールされていることを確認してください。証明が配信されるターゲットリポジトリは、アクション設定から読み書きアクセスできる必要があります。
セルフホストDockerインスタンスがタイムスタンプを生成しない
セットアップウィザード中にライセンスファイルがアップロードされたことを確認してください。また、インスタンスがGitHub App OAuthとタイムスタンプアンカーに必要なネットワーク接続を持っていることも確認してください。
証明の検証が失敗する
正しい.otsファイルと日付を検証していることを確認してください。あるリポジトリと日付のレシートは、別の日やリポジトリのコミットを検証しません。
FAQ
Q:ソフトウェアにおける先行技術とは何ですか?
A:先行技術とは、コード、アルゴリズム、設計などの発明が特定の日付より前に存在していたことを示す証拠です。通常、特許請求を無効にするか、著作者を証明するために使用されます。
Q:Bitcoinアンカーはどのように先行技術を証明するのですか?
A:Gitコミットハッシュは、OpenTimestampsプロトコルを介してBitcoinトランザクションに埋め込まれます。ブロックで確認されると、タイムスタンプは不変であり、誰でも検証可能になり、そのハッシュがその時点で存在していたことを証明します。
Q:Timestamp GITはオープンソースプロジェクトに無料ですか?
A:はい。Timestamp GITは公開リポジトリ向けに無料プランを提供しています。プライベートリポジトリには、Pro AgencyまたはEnterprise ZKの有料プランが必要です。
Q:ソースコードを公開せずにTimestamp GITを使用できますか?
A:はい。標準モードでは、コミットハッシュのみが読み取られ、ソースコードは読み取られません。Enterprise ZKモードでは、GitHub Actionが独自のインフラストラクチャからハッシュのみをプッシュするため、ソースコードが環境から出ることはありません。
Q:タイムスタンプの確認にはどのくらい時間がかかりますか?
A:夜間ワーカーが深夜以降にハッシュをグループ化してアンカーします。Bitcoinの確認には、アンカートランザクション後通常約3時間かかるため、その直後に.ots証明ファイルが表示されることが期待されます。
結論
Git履歴だけでは、編集、削除、または自己都合のものとして却下される可能性があるため、強力な先行技術の証拠にはなりません。BitcoinアンカーされたOpenTimestampsレシートは、数学的に無視することが困難です。
Timestamp GITは、これを現役の開発者にとって実用的なものにします。GitHub Appを一度インストールし、リポジトリを選択し、通常どおりコミットを続けるだけです。夜間アンカー、証明配信、バッジ、PDF証明書、監査CSVはすべて自動的に処理されます。OpenTimestampsコマンドを実行したり、Bitcoinブロックチェーンと手動でやり取りしたりする必要はありません。
公開リポジトリで無料で始めるには、Timestamp GITにアクセスしてください。