開発者向け統合ガイド

プロップファーム、ブローカー、取引所のCTO・開発者向け
VCPを既存システムに組み込むための完全ガイド

5分でVCPを試す

1. SDKをインストール

お使いの環境に合わせたSDKを選択

2. イベントをログ

取引イベントをVCP形式で記録

3. 検証完了

VCP Explorerで透明性を確認

VCP Explorer を開く

VCPチェーンの整合性をリアルタイムで検証

推奨:まずはSilver Tierでログだけ取り始める

本番システムに影響を与えず、並行してVCPログを生成する「シャドーロギング」から始めることを推奨します。

# Python でのシンプルな実装例
pip install vcp-core-py

from vcp import VCPLogger, Tier

# Silver Tier ロガーを初期化
logger = VCPLogger(tier=Tier.SILVER, private_key="your-key")

# 取引イベントを記録
logger.log_order(
    symbol="EURUSD",
    side="BUY",
    quantity="100000",
    price="1.08450"
)

# ローカルにJSON形式で保存(本番システムと並行稼働)
logger.save("./vcp_logs/")

公式SDK一覧

vcp-core-py

Python 3.8+

データサイエンティスト、リスク管理者、バックテスト向け。高レベルAPIで簡単に統合可能。

バックテスト監査
VCP-RISKログ生成
RFC 8785準拠のJSON正規化
pip install vcp-core-py
コード例を見る

vcp-core-cpp

C++17/20

HFTエンジニア、取引所開発者向け。マイクロ秒レベルの超低レイテンシ実装。

SBEバイナリエンコーディング
PTPクロック連携
ゼロコピー・メモリプール
# CMake経由でインストール
git clone https://github.com/vso/vcp-core-cpp
cmake -B build && cmake --build build
コード例を見る

vcp-mql-bridge

MQL4/5

リテールプロップ開発者、EA開発者向け。MT4/MT5に簡単統合可能なDLL/EA。

非同期HTTP通信
クライアントサイド署名
MT4/5イベントフック
// MT4/MT5のExpertフォルダにコピー
// #include <VCP_Bridge.mqh>
コード例を見る

Tier別実装パターン

ビジネス要件と技術的制約に応じて、3つのコンプライアンスTierから選択できます。

Platinum Tier

HFT・取引所・機関投資家向け

最高精度

技術要件

  • 時刻同期: PTP (IEEE 1588) ナノ秒精度
  • 実装: カーネルバイパス (DPDK/AF_XDP)
  • レイテンシ: <1μs ロギングオーバーヘッド
  • SDK: vcp-core-cpp (C++17/20)

ユースケース

  • 高頻度取引 (HFT)
  • 暗号資産取引所
  • 機関投資家のアルゴ取引
  • MiFID II 完全準拠
// C++ Platinum実装例 (SBEバイナリエンコーディング)
#include <vcp/platinum.hpp>

vcp::PlatinumLogger logger(
    vcp::ClockSource::PTP_HARDWARE,  // PTCハードウェアクロック
    vcp::Encoding::SBE                // Simple Binary Encoding
);

// マイクロ秒単位の高精度ロギング
logger.log_order_accepted(order_id, timestamp_ns);

Gold Tier

中規模ブローカー・Propファーム向け

推奨

技術要件

  • 時刻同期: NTP マイクロ秒精度
  • 実装: サーバーサイド統合
  • レイテンシ: <100μs ロギングオーバーヘッド
  • SDK: vcp-core-py / vcp-core-cpp

ユースケース

  • 中規模ブローカー
  • プロップトレーディングファーム
  • アルゴリズム取引プラットフォーム
  • 規制準拠が必要な業者
# Python Gold実装例 (サーバーサイド統合)
from vcp import VCPLogger, Tier, ClockSync

logger = VCPLogger(
    tier=Tier.GOLD,
    clock_sync=ClockSync.NTP_SYNCED,
    private_key_path="./server_key.pem"
)

# サーバー側で取引イベントをインターセプト
@trading_engine.on_order_executed
def log_execution(order):
    logger.log_execution(
        order_id=order.id,
        symbol=order.symbol,
        side=order.side,
        quantity=str(order.quantity),
        price=str(order.price)
    )

Silver Tier

ホワイトラベル・小規模業者向け

最速導入

技術要件

  • 時刻同期: NTP/Best-effort ミリ秒精度
  • 実装: クライアントサイド統合
  • レイテンシ: 非同期(取引に影響なし)
  • SDK: vcp-mql-bridge (MT4/MT5)

ユースケース

  • ホワイトラベルPropファーム
  • 小規模ブローカー
  • 個人トレーダーのEA
  • パイロット導入・PoC

Silver Tierの戦略的価値

ホワイトラベル業者はサーバーに手を出せない制約がありますが、Silver Tierの「クライアントサイド署名」により、 ブローカーを経由せずに独立した監査ログを生成できます。これは技術的妥協ではなく、ガバナンス上の革新です。

// MQL5 Silver実装例 (クライアントサイド署名)
#include <VCP_Bridge.mqh>

// EA初期化時にVCPロガーをセットアップ
int OnInit() {
    VCP_Init(TIER_SILVER, "client_private_key");
    return INIT_SUCCEEDED;
}

// 注文時に自動ロギング
void OnTradeTransaction(const MqlTradeTransaction& trans) {
    if (trans.type == TRADE_TRANSACTION_ORDER_ADD) {
        // 非同期でVCPログを送信(取引に影響なし)
        VCP_LogOrder(trans.order, trans.symbol, trans.volume);
    }
}

統合パターン詳細

パターンA: サイドカー統合

取引プラットフォームのコアエンジンを修正せず、外部プロセスとして並行稼働

サイドカーパターン

データフロー

  1. トレーダーの端末で注文発生
  2. ブリッジEAがイベント検知、UUID生成
  3. JSONペイロードを構築し署名
  4. VeritasChain Cloud (VCC)へ非同期送信

メリット

  • • ブローカーのインフラに依存しない
  • • 独立した監査ログを生成
  • • データ改ざんの検知が可能

パターンB: カーネルバイパス

OSネットワークスタックをバイパスし、NICから直接データアクセス

カーネルバイパスパターン

技術詳細

  • SBE (Simple Binary Encoding)
  • ゼロコピー・シリアライゼーション
  • ロックフリー・リングバッファ
  • PTCハードウェアクロック連携

HFT向け最適化

マイクロ秒を争うHFT環境で、ロギング処理が取引スレッドをブロックしないよう設計。 Platinum Tier専用の超低レイテンシ実装。

パターンC: シャドーロギング

既存システムと並行してVCPログを生成(移行初期フェーズ)

段階的移行プロセス

1
シャドーロギング

既存システムと並行稼働、本番に影響なし

2
ハイブリッド運用

内部監査・紛争解決でVCPログを参照開始

3
完全移行

VCPチェーンを正本(Golden Source)として指定

パターンD: VeritasChain Cloud (VCC)

SaaS型ソリューション:自社ノード不要でVCP準拠を実現

VCC の特徴

  • インフラ管理不要
  • REST API経由でログ送信
  • 自動アンカリング・検証
  • ダッシュボード・Explorer提供
# VCC API 使用例
curl -X POST https://api.veritaschain.cloud/v1/events \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "ORDER_ACCEPTED",
    "symbol": "BTCUSD",
    "side": "BUY",
    "quantity": "0.5",
    "price": "45000.00"
  }'

実装コード例

Python: バックテスト監査の実装

#!/usr/bin/env python3
"""
VCP Backtest Audit Logger
バックテストの全取引を監査可能な形式で記録
"""
from vcp import VCPLogger, Tier, EventType
from datetime import datetime
import uuid

# ロガー初期化(Silver Tier、テスト環境向け)
logger = VCPLogger(
    tier=Tier.SILVER,
    private_key_path="./test_key.pem",
    output_dir="./vcp_audit_logs/"
)

# バックテストの取引イベントをロギング
def log_backtest_trade(symbol, side, quantity, price, timestamp):
    """
    バックテスト取引をVCP形式でログ
    
    Args:
        symbol: 通貨ペア (例: "EURUSD")
        side: BUY / SELL
        quantity: 数量(String型で精度維持)
        price: 価格(String型で精度維持)
        timestamp: 取引時刻
    """
    event_id = str(uuid.uuid7())  # UUID v7で時系列ソート可能
    
    logger.log_event(
        event_id=event_id,
        event_type=EventType.ORDER_ACCEPTED,
        timestamp=timestamp,
        payload={
            "symbol": symbol,
            "side": side,
            "quantity": str(quantity),  # 必ずString型
            "price": str(price),        # 必ずString型
            "backtest": True,
            "strategy": "mean_reversion_v2"
        }
    )

# 使用例
if __name__ == "__main__":
    # バックテストループ
    trades = [
        ("EURUSD", "BUY", "100000", "1.08450", datetime.now()),
        ("GBPUSD", "SELL", "50000", "1.26320", datetime.now()),
    ]
    
    for symbol, side, qty, price, ts in trades:
        log_backtest_trade(symbol, side, qty, price, ts)
    
    # VCPチェーンを検証
    if logger.verify_chain():
        print("✓ バックテストログの整合性確認完了")
        logger.export_json("backtest_audit_2024.json")
    else:
        print("✗ チェーン整合性エラー検出")

C++: HFT向け超低レイテンシ実装

/**
 * VCP Platinum Tier Logger for HFT
 * マイクロ秒レベルの低レイテンシ実装
 */
#include <vcp/platinum.hpp>
#include <vcp/sbe_encoder.hpp>
#include <vcp/ptp_clock.hpp>

class HFTVCPLogger {
private:
    vcp::PlatinumLogger logger_;
    vcp::PTPClock ptp_clock_;
    vcp::SBEEncoder encoder_;
    vcp::RingBuffer<vcp::TradeEvent, 65536> event_buffer_;

public:
    HFTVCPLogger() 
        : logger_(vcp::ClockSource::PTP_HARDWARE, vcp::Encoding::SBE),
          ptp_clock_("/dev/ptp0"),
          encoder_(),
          event_buffer_() {
        // ロックフリー・リングバッファで非同期ロギング
        logger_.set_async_mode(true);
    }

    // 注文受付イベントをナノ秒精度でログ
    inline void log_order_accepted(
        uint64_t order_id,
        const char* symbol,
        Side side,
        const char* quantity,
        const char* price
    ) {
        // PTCハードウェアクロックから直接タイムスタンプ取得
        uint64_t timestamp_ns = ptp_clock_.now_ns();
        
        // SBEでゼロコピー・エンコーディング
        vcp::TradeEvent event;
        event.event_id = vcp::uuid_v7_generate(timestamp_ns);
        event.event_type = vcp::EventType::ORDER_ACCEPTED;
        event.timestamp_ns = timestamp_ns;
        event.order_id = order_id;
        std::strncpy(event.symbol, symbol, sizeof(event.symbol));
        event.side = side;
        std::strncpy(event.quantity, quantity, sizeof(event.quantity));
        std::strncpy(event.price, price, sizeof(event.price));
        
        // リングバッファにプッシュ(ロックフリー、取引スレッドをブロックしない)
        event_buffer_.push(event);
    }

    // バックグラウンドスレッドで定期的にフラッシュ
    void async_flush_worker() {
        while (running_) {
            vcp::TradeEvent event;
            if (event_buffer_.pop(event)) {
                logger_.write_event(event);
            }
        }
    }
};

// 使用例
int main() {
    HFTVCPLogger vcp_logger;
    
    // 取引エンジンのコールバック
    trading_engine.on_order_accepted([&](const Order& order) {
        // 1マイクロ秒未満のオーバーヘッド
        vcp_logger.log_order_accepted(
            order.id,
            order.symbol.c_str(),
            order.side,
            order.quantity_str.c_str(),
            order.price_str.c_str()
        );
    });
    
    return 0;
}

MQL5: MT5向けクライアントサイド署名EA

//+------------------------------------------------------------------+
//|                                            VCP_ClientLogger.mq5 |
//|                                  VeritasChain Standards Org     |
//|                                       https://veritaschain.org  |
//+------------------------------------------------------------------+
#property copyright "VeritasChain Standards Organization"
#property link      "https://veritaschain.org"
#property version   "1.00"

#include <VCP_Bridge.mqh>

// グローバル変数
CVCPBridge vcp;
string private_key = "your_private_key_here";  // 本番では暗号化ストレージから取得

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {
    // VCP Bridge初期化(Silver Tier、クライアントサイド署名)
    if (!vcp.Init(TIER_SILVER, private_key)) {
        Print("VCP初期化エラー");
        return INIT_FAILED;
    }
    
    Print("VCP Logger初期化完了 (Silver Tier)");
    Print("クライアントサイド署名モード: ブローカー非依存");
    
    return INIT_SUCCEEDED;
}

//+------------------------------------------------------------------+
//| Trade transaction event handler                                  |
//+------------------------------------------------------------------+
void OnTradeTransaction(
    const MqlTradeTransaction& trans,
    const MqlTradeRequest& request,
    const MqlTradeResult& result
) {
    // 注文が追加された時
    if (trans.type == TRADE_TRANSACTION_ORDER_ADD) {
        LogOrderAccepted(trans, request);
    }
    
    // 注文が執行された時
    if (trans.type == TRADE_TRANSACTION_DEAL_ADD) {
        LogOrderExecuted(trans, result);
    }
}

//+------------------------------------------------------------------+
//| 注文受付をVCPログに記録                                          |
//+------------------------------------------------------------------+
void LogOrderAccepted(
    const MqlTradeTransaction& trans,
    const MqlTradeRequest& request
) {
    // VCPイベント構築
    VCPEvent event;
    event.event_id = vcp.GenerateUUIDv7();  // UUID v7生成
    event.event_type = "ORDER_ACCEPTED";
    event.timestamp = TimeGMT();
    
    // ペイロード(JSON形式)
    string payload = StringFormat(
        "{\"symbol\":\"%s\",\"side\":\"%s\",\"quantity\":\"%s\",\"price\":\"%s\",\"order_id\":%I64d}",
        trans.symbol,
        (trans.order_type == ORDER_TYPE_BUY || trans.order_type == ORDER_TYPE_BUY_LIMIT) ? "BUY" : "SELL",
        DoubleToString(trans.volume, 2),  // String型に変換(精度維持)
        DoubleToString(trans.price, _Digits),  // String型に変換
        trans.order
    );
    event.payload = payload;
    
    // クライアントサイドで署名してVCCに送信
    if (vcp.SendEventAsync(event)) {
        Print("✓ VCPログ送信成功: ", event.event_id);
    } else {
        Print("✗ VCPログ送信失敗(リトライキューに追加)");
    }
}

//+------------------------------------------------------------------+
//| 注文執行をVCPログに記録                                          |
//+------------------------------------------------------------------+
void LogOrderExecuted(
    const MqlTradeTransaction& trans,
    const MqlTradeResult& result
) {
    VCPEvent event;
    event.event_id = vcp.GenerateUUIDv7();
    event.event_type = "ORDER_EXECUTED";
    event.timestamp = TimeGMT();
    
    string payload = StringFormat(
        "{\"deal_id\":%I64d,\"order_id\":%I64d,\"symbol\":\"%s\",\"volume\":\"%s\",\"price\":\"%s\"}",
        trans.deal,
        trans.order,
        trans.symbol,
        DoubleToString(trans.volume, 2),
        DoubleToString(trans.price, _Digits)
    );
    event.payload = payload;
    
    vcp.SendEventAsync(event);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
    // 未送信のイベントをフラッシュ
    vcp.FlushPendingEvents();
    Print("VCP Logger停止");
}

GitHubリポジトリ

VCP Specification

公式仕様書、スキーマ定義、コンフォーマンステスト

vcp-spec を見る

Python SDK

vcp-core-py: Pythonライブラリとドキュメント

vcp-core-py を見る

C++ SDK

vcp-core-cpp: HFT向けC++ライブラリ

vcp-core-cpp を見る

MQL Bridge

vcp-mql-bridge: MT4/MT5統合ライブラリ

vcp-mql-bridge を見る

コミュニティへの貢献

VCPはオープンスタンダードです。プルリクエスト、バグレポート、機能提案を歓迎します。

GitHub Organizationを見る

技術サポートが必要ですか?

統合に関するご質問、PoC支援、エンタープライズ導入のご相談はお気軽にお問い合わせください

🇨🇳 中文 | 🇯🇵 日本語 | 🇬🇧 English