跳到主要内容

arbiter

import "github.com/bsv8/go-bitfs/arbiter"

Package arbiter 是 007/008 的 Arbiter 角色 API:持有固定受约束 Signer, 完成"先完整验证并持久化托管证据、再独立重建交易与 digest 后签名"的 Prepare-before-Sign 编排,以及时间无关的 008 取回鉴权/托管验证与 Kind 11 两分支构造。它不拥有存储、网络、节点或业务最新状态;应用负责在 Prepare 与 Sign 之间先持久化 exact 托管证据。

索引​

函数 AuthenticateRetrieval​

func AuthenticateRetrieval(rawKind10 []byte, storedKind8 []byte) error

AuthenticateRetrieval 仅完成 Buyer 鉴权:时间无关,不需要 Kind 9 存在。 rawKind10 与 storedKind8 都是 exact bytes;鉴权失败返回 invalid_signature/unauthorized/invalid_evidence 分类错误。持有 storedKind8 记录的一方即托管仲裁方,因此本入口不需要再传仲裁方公钥。

函数 BuildAvailableRetrieval​

func BuildAvailableRetrieval(ctx context.Context, requestID protocol.ContentRetrievalRequestID, custody *arbitration.VerifiedCustodiedContent, signer protocol.Signer) (wire.Artifact, error)

BuildAvailableRetrieval 构造并签署 valid exact Kind 11 available Artifact,直接 附带经 content_payloads_id 绑定的 verified exact payloads。available 分支 不产生也不携带任何付款凭证。

函数 BuildUnavailableRetrieval​

func BuildUnavailableRetrieval(ctx context.Context, requestID protocol.ContentRetrievalRequestID, reason arbitration.ContentRetrievalUnavailableReason, signer protocol.Signer) (wire.Artifact, error)

BuildUnavailableRetrieval 构造并签署 valid exact Kind 11 unavailable Artifact: 只携带结构合法的 request ID 与诚实 reason,无 Claim、无角色公钥、无记录元数据。

函数 CompleteArbitratedPayment​

func CompleteArbitratedPayment(signed SignedArbitrationEvidence, sellerSignature []byte) ([]byte, error)

CompleteArbitratedPayment 从签名证据包重建 paid candidate 并合并 Seller/Arbiter 双签名:重建、回执重验与双签名验证全部在 pool 内部一次完成;返回完整仲裁交易 原文,是否广播由应用决定。调用方提供卖方对同一 candidate 的 detached 交易签名。

类型 PreparedArbitrationEvidence​

PreparedArbitrationEvidence 是已完整验证但尚未签名的普通仲裁证据包: exact Kind 8、按显式正费用独立重建的 candidate、Claim ID 与冻结费用。 应用可直接序列化持久化;SignPreparedArbitration 必须从它重新验证全部证据。

type PreparedArbitrationEvidence struct {
// RawKind8 是卖方发来的 exact Kind 8 托管请求字节。
RawKind8 []byte
// CandidateRaw 是从 Claim primitives 按显式费用唯一重建的未签名仲裁交易原文。
CandidateRaw []byte
// ArbitrationClaimID = SHA-256(exact arbitration_claim_cbor),托管记录身份。
ArbitrationClaimID protocol.ArbitrationClaimID
// FeeSatoshis 是本次仲裁的绝对仲裁费(正数,聪)。
FeeSatoshis protocol.Satoshis
}

函数 PrepareArbitration​

func PrepareArbitration(rawKind8 []byte, fee protocol.Satoshis) (*PreparedArbitrationEvidence, error)

PrepareArbitration 离线校验 exact Kind 8 的签名、内容哈希、角色与金额, 按调用方给出的正仲裁费独立重建 candidate;不查询链状态或读取时间事实。 deadline/退款锁是证据字段,不作为仲裁服务拒签条件;签名不保证链上可兑现。 应用须先持久化此证据包,再调用 SignPreparedArbitration。

类型 SignedArbitrationEvidence​

SignedArbitrationEvidence 是签名阶段产出的普通证据包:冻结的 Prepare 证据、 待发送 exact Kind 9 与仲裁交易签名。CompleteArbitratedPayment 需要它来合并 Seller/Arbiter 双签名。

type SignedArbitrationEvidence struct {
// Prepared 是签名前的完整证据快照;合并时会再次全量重验。
Prepared PreparedArbitrationEvidence
// Outbound 是待发送 exact Kind 9 回执 Artifact。
Outbound wire.Artifact
// ArbiterTransactionSignature 是仲裁方对 candidate 的 detached 交易签名。
ArbiterTransactionSignature []byte
}

函数 SignPreparedArbitration​

func SignPreparedArbitration(ctx context.Context, prepared PreparedArbitrationEvidence, signer protocol.Signer) (*SignedArbitrationEvidence, error)

SignPreparedArbitration 是先持久化后的签名步骤:从冻结的 exact Kind 8 字节 独立重建交易与 digest,重新比较 Claim ID、费用、角色 与 candidate,然后按固定顺序签名——先仲裁交易签名,再编码回执, 最后生成并自验统一回执消息签名。绝不信任缓存的 mutable candidate。

由 gomarkdoc 生成