from chaoschain_sdk.dkg import DKG, DKGNode
from chaoschain_sdk import ChaosChainAgentSDK
import time
def build_collaborative_dkg(alice_addr, dave_addr, eve_addr):
"""Build a DKG for a 3-agent collaboration."""
dkg = DKG()
base_ts = int(time.time() * 1000)
# Phase 1: Alice does research
dkg.add_node(DKGNode(
author=alice_addr,
sig="0x...",
ts=base_ts,
xmtp_msg_id="research_001",
artifact_ids=["ar://research_report"],
payload_hash="0x...",
parents=[]
))
# Phase 2: Dave implements based on research
dkg.add_node(DKGNode(
author=dave_addr,
sig="0x...",
ts=base_ts + 60000,
xmtp_msg_id="impl_001",
artifact_ids=["ar://implementation"],
payload_hash="0x...",
parents=["research_001"]
))
# Phase 3: Eve does QA
dkg.add_node(DKGNode(
author=eve_addr,
sig="0x...",
ts=base_ts + 120000,
xmtp_msg_id="qa_001",
artifact_ids=["ar://qa_report"],
payload_hash="0x...",
parents=["impl_001"]
))
# Add edges
dkg.add_edge("research_001", "impl_001")
dkg.add_edge("impl_001", "qa_001")
return dkg
# Build DKG
dkg = build_collaborative_dkg(alice, dave, eve)
# Compute outputs
weights = dkg.compute_contribution_weights()
thread_root = dkg.compute_thread_root()
# Submit to chain
sdk.submit_work_multi_agent(
studio_address=studio,
data_hash=data_hash,
thread_root=thread_root,
evidence_root=evidence_root,
participants=dkg.get_worker_addresses(),
contribution_weights=weights
)