Skip to Content
開発者ガイドブロックチェーン技術詳細

ブロックチェーン技術詳細

VeriCerts Zeroのブロックチェーン連携における技術的な詳細を説明します。

Note: ブロックチェーン連携はエンタープライズプラン向け機能です。 概要についてはなぜブロックチェーンを使うのかをご覧ください。

アーキテクチャ概要

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ VeriCerts API │ ───▶ │ Account │ ───▶ │ Blockchain │ │ │ │ Abstraction │ │ (ERC-1056/VC) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │ │ │ 非同期処理 │ └──────────────────────────────────────────────────┘ トランザクション完了通知

ガスレストランザクション

ガスレストランザクションとは

ブロックチェーンへの書き込みには通常「ガス代」と呼ばれる手数料が必要です。ガスレストランザクションは、この手数料をエンドユーザーに負担させない仕組みです。

従来の課題

課題説明
ガス代の準備ユーザーが暗号資産を購入・保有する必要がある
価格変動ネットワーク混雑時にガス代が高騰
UXの悪化一般ユーザーにとって複雑なプロセス

VeriCerts Zeroの解決策

VeriCerts Zeroでは、Paymaster(ガス代の代理支払い者)がトランザクション手数料を負担します。

1. ユーザーがVC発行をリクエスト 2. VeriCerts APIがUserOperation(署名済みトランザクション)を生成 3. Paymasterがガス代を代理支払い 4. Bundlerがトランザクションをブロックチェーンに送信 5. ユーザーはガス代を支払わずに完了

Account Abstraction

Account Abstractionとは

Account Abstraction(アカウント抽象化、ERC-4337)は、従来のEOA(Externally Owned Account)に代わる新しいアカウントモデルです。スマートコントラクトをウォレットとして使用することで、柔軟なトランザクション処理が可能になります。

従来のEOAとの比較

項目従来(EOA)Account Abstraction
アカウント秘密鍵から生成されるアドレススマートコントラクト
トランザクション署名秘密鍵で直接署名コントラクトロジックで検証
ガス代自分で支払い必須Paymasterによる代理支払い可能
ウォレットMetaMask等が必須不要(API経由で操作)

開発者へのメリット

  • ウォレット不要: エンドユーザーにMetaMask等のインストールを要求しない
  • Web2的UX: ブロックチェーンを意識させないユーザー体験が可能
  • バッチ処理: 複数のトランザクションを1回にまとめて効率化

UUPSアップグレードパターン

UUPSとは

UUPS(Universal Upgradeable Proxy Standard)は、スマートコントラクトをアップグレード可能にするデザインパターンです。

コントラクトアドレスの固定

VeriCerts Zeroのスマートコントラクト(VCRegistry)はUUPSパターンを採用しています。

┌─────────────────┐ ┌─────────────────┐ │ Proxy │ ───▶ │ Implementation │ │ (アドレス固定) │ │ (V1 → V2 → V3) │ └─────────────────┘ └─────────────────┘ 開発者はこのアドレスを参照 (バージョンアップしても変わらない)

開発者へのメリット

従来のアップグレードUUPSパターン
新コントラクトをデプロイ実装のみ更新
アドレスが変わるアドレス固定
連携システムの修正が必要修正不要
データ移行が必要データ保持

セキュリティ

  • アップグレード権限は特定のロール(UPGRADER_ROLE)を持つアドレスのみに制限をしております
  • OpenZeppelin Contractsベースの実装を採用しています

非同期処理

なぜ非同期なのか

ブロックチェーンへの書き込みは数秒〜数十秒かかるため、同期的に待機するとユーザー体験が低下します。VeriCerts Zeroでは非同期処理を採用し、VC発行は即座に完了します。

処理フロー

1. VC発行API呼び出し └─▶ 即座にVC発行完了(データベースに保存) 2. バックグラウンドスケジューラー(定期実行) └─▶ 未書き込みのVCをブロックチェーンに登録

VC発行とブロックチェーン書き込みは分離されているため、ユーザーは書き込み完了を待つ必要がありません。

スマートコントラクト仕様

Note: コントラクトアドレスやABIの取得については営業窓口までお問い合わせください。

VCRegistry

VCの登録・検証・失効を管理するコントラクトです。

主要な関数

関数説明
registerVC()VCをオンチェーン登録
verifyVC()VCの有効性を検証
revokeVC()VCを失効(永久)
suspendVC()VCを一時停止(復帰可能)

VCステータス

Active ──────▶ Revoked(永久失効、復帰不可) └────────▶ Suspended ◀────▶ Active(一時停止、復帰可能)

ERC-1056(DID Registry)

DIDの属性管理に使用します。

関数説明
setAttribute()DIDに属性(公開鍵など)を追加
addDelegate()委任を設定
revokeDelegate()委任を取り消し

※ DID自体は発行時にオンチェーン書き込み不要。属性変更時のみ記録されます。

関連リンク

Last updated on