跳到主要内容

NVDA Printer:规则、角色和合约

快速上手讲该做什么。这一页讲合约强制执行什么、哪些只是我们的做法、谁拿着哪把钥匙能做什么。常量直接写数字; owner 能改的,写它的边界,当前值在金库页面上。

金库是什么​

一个 BrokerEpochVault 持有 NVDA token,发行不可转让的份额。每周它通过自己的 BrokerVaultQuotedDesk,把它全部 NVDA 的一张 covered call 卖给白名单里的买方;报价由报价签名人签名、买方批准。买方的权利金在同一笔交易里进入金库。到期时按链上 证明过的价格结算,权利金按份额分配。

合约决定什么
BrokerEpochVault存款、份额、每周的阶段、领取、队列、暂停
BrokerVaultQuotedDesk签名报价的卖出、权利金托管、费用、结算和 1 小时作废窗口
BrokerVaultOracle开仓时和到期时的 NVDA 价格:Chainlink,或带宽内经签名的官方收盘价
BrokerVaultDeskOperator金库的 operator:把签好名的每周卖出转给 Desk,别的什么都不做
BrokerVaultScheduler每周的时间,由链上交易日历推出来;任何人都可以调用
BrokerVaultZapUSDG 存款和自愿开启的复投,按预言机约束的价格在池子里换
BrokerVaultExitPool周中按签名报价买下锁仓份额
HedgeStakingGate允许存款的 HEDGE 质押

它们都不是代理合约,都不能升级,金库的 ownership 不能放弃也不能绕过。

角色​

角色谁持有能做不能做
Owner2/3 Safe下面这些参数(在边界内);暂停;卖出后 1 小时内作废动存户的 NVDA、份额或权利金
OperatorBrokerVaultDeskOperator,一个没有钥匙的合约提交签好名的每周卖出其他任何事;它没有别的函数
KeeperHedgehood 的服务器付 gas:冻结、通过 operator 提交卖出、跑队列、结算陌生人做不到的事;它做的每一步任何人都能做
报价签名人Hedgehood 的钥匙签每周卖出的条款自己锁定任何东西
期权买方Hedgehood 的账户批准报价并付权利金付得比 Desk 下限少
收盘价签名人Hedgehood 的钥匙签官方收盘价让价格偏离 Chainlink 超过 0.75%
退出签名人Hedgehood 的钥匙签周中退出价格让支付超过退出池的上限和库存
复投 keeperHedgehood 的 keeper给开了复投的账户复投权利金把权利金送到那个账户自己的存款以外的地方

买方是 Hedgehood。权利金按上市期权的买价算,并有链上下限把关,但每一张 call 的对手方都是我们。这是利益冲突,写在这里, 不藏。

一周的精确规则​

时间是纽约时间,来自交易日历;节假日跳过,提前收盘时到期也提前。

步骤规则
排期排期合约在截止前至少 12 小时发布每一周;任何人都可以调用
截止周一 09:30;之后的存款属于下一周
冻结截止时给金库里的 NVDA 和份额数拍快照;任何人都可以触发
卖出09:35 到 15:30 之间(交易窗口);到 15:30 还没卖出,这一周跳过,什么都不变
到期周五 15:59,距窗口结束至少 12 小时、至多 9 天
结算约 16:10 起,见下文;无需许可

存入​

  • 门槛。 账户在门槛合约里质押至少门槛数量(1,000,000 HEDGE)时才能存款。只要还有本金在金库里,min(质押, 门槛) 保持锁定,只有超出部分能申请解除。解除要先申请,再等 7 天。Owner 能改门槛、能阻止新存款,碰不到任何人的质押。
  • USDG。 Zap 在池子里把 USDG 换成 NVDA。最少换到的 NVDA 必须不低于预言机价格减 1%,链上强制,所以存款的成交价 不会比这更差。
  • 队列。 存款按它所属的那一周排成一批。接受存款期间,keeper 最多每小时把它们按当时的每份 NVDA 换成份额;锁仓周里的 存款要等那一周结算。变成份额之前,或在它那一周的截止之前,都可以撤回,拿回同样数量的 NVDA。
  • 上限。 总 NVDA 有 owner 设的上限,页面显示剩余额度。

卖出​

合约强制:

规则数值
行权价必须严格价外,至少minOtmBps:owner 设,不能低于 0.5%;当前 1%
行权价至多比现价高当周的偏离,6.5%;合约上限 10%
权利金至少名义金额的 minPremiumBps:owner 设,不能低于 0.1%;当前 0.2%
权利金至多名义金额的 10%
覆盖冻结时金库里的全部 NVDA
报价报价签名人签名、买方批准、不超过 120 秒、对应本周的到期日
使用的价格预言机;休市或喂价过期时它拒绝给价

我们的做法(合约不强制):在上面的带宽里,选当周五到期、delta 最接近 0.15 的上市 NVDA call,按 OPRA 买价成交;如果这个 行权价的权利金低于下限加 0.05%,就选能达到的、delta 最接近的那个。行情冷清的一周它会往价内靠,但绝不出带宽。

费用。 Hedgehood 收权利金的 feeBps,当前 20%,上限 30%。第一次卖出之后,提高费率只对至少 7 天后的卖出生效, 所以它永远不会落在截止和当周卖出之间;降低立即生效。已经卖出的一周保持它卖出时的费率。

作废。 卖出后的一小时内,owner 可以写明理由作废这次卖出。买方拿回 90% 的权利金,另外 10% 留给存户;NVDA 不动。 这一小时里不能周中退出。

结算​

价格。 如果这一周卖出时已经设了收盘价签名人,就按 NVDA 的官方收盘价结算:由那把钥匙签名,到期 10 分钟后起接受,且 只在距到期前最后一轮 Chainlink 价 0.75% 以内才接受。我们的签名人只有在两家独立数据源对收盘价精确到分一致时才签,证据 公开。否则(以及到期 48 小时后的兜底),价格是到期前最后一轮 Chainlink 价,由它的下一轮证明。一周用哪个价格来源在卖出时 就固定,之后改签名人也切换不了。

支付,P 是结算价,K 是行权价,N 是覆盖的 NVDA:

  • P ≤ K:存户保留全部 N 个 NVDA,以及扣费后的权利金。
  • P > K:买方拿到 N × (P − K) / P 个 NVDA,即行权价以上的价值。其余的和扣费后的权利金归存户。
  • 到期后 7 天都没有价格:按 P ≤ K 结算。

到期后的每一步都无需许可:任何人都可以确定价格并结算,所以 keeper 不在只会让一周晚一点,拖不住它。

把钱拿出来​

合约规则
撤回存款在它变成份额之前,或它那一周截止之前
到期后取回requestRedeem 预留份额;接受存款期间在下一次队列处理时、锁仓期间在结算时以 NVDA 支付;之前可撤销;无费用
立即退出退出池在卖出后 1 小时到到期前 1 小时之间买入份额,签名报价 25 秒有效、只能用一次,受池子上限和库存限制

退出价格按市场买回你那份 call 的成本接手它:

每份价值 = 未覆盖 × S_bid + 已覆盖 × (S_bid − C_ask) + (权利金 − 费用) / 卖出时的份额数
支付 = 份额 × 每份价值 × (1 − 退出费) 以 USDG,或 ÷ S_ask 以 NVDA

S 是 NVDA 的 SIP 报价,C_ask 是本周那张 call 的 OPRA 卖价。退出费 1%,每份报价里都写明。

复投​

开了复投的账户,在一周结算后、下一次截止前、市场开盘时,由 keeper 把可领的权利金换成 NVDA,成交价不差于预言机价减 1%, 排成它下一周的存款。keeper 只能对开了复投的账户这么做,也只能放进它们自己的存款。关闭立即生效。

Owner 能改什么​

存款上限 · HEDGE 门槛和门槛合约 · operator · 退出池名单 · 暂停 · 报价签名人、买方和买方批准钥匙 · 费用(有边界、有延迟) · 权利金和价外下限(有边界)· 收盘价签名人(0.75% 带宽,每周在卖出时固定)· 复投 keeper · 退出池自己的签名人和它自己的 库存。

暂停停止新存款、新卖出和退出池买入。结算、领取、撤回和取回照常;暂停期间跑队列,会把待生效存款退还为可领 NVDA,而不是 激活它们。

这些都动不了存户的 NVDA、份额或权利金。

为什么 operator 是一个合约​

金库里还保留着它最初的设计:operator 在券商那边卖 call,再上报结果。这种锁仓周的亏损由 operator 报,上限是按预言机价格 的 call 内在价值加名义金额的 0.5%,从存户的 NVDA 里扣。Desk 卖出的一周永远不能按上报的数字结算,但谁当 operator,谁就 可以改开这样一周。

所以 operator 不是一把钥匙,而是 BrokerVaultDeskOperator:一个没有 owner、没有存储、不持有资金的合约,唯一的函数是 把签好名的卖出转给 Desk。broker 路径检查 msg.sender == operator,而没有任何办法让这个合约去调用它。keeper 通过它提交 卖出,其他任何人也可以,因为报价签名人和买方已经签过名,所有边界照样生效。

唯一的回头路是 owner 的决定:2/3 Safe 重新把一把钥匙设成 operator,这是一笔任何人都能在链上看到的交易。我们不会这么做, 写在这里是为了让你能自己查。

会出什么问题​

  • NVDA 下跌。 金库是 NVDA 多头。权利金是垫子,不是对冲。
  • NVDA 大涨。 行权价以上的部分每周都卖掉了。
  • 价格出错。 结算价依赖 Chainlink,签名周还依赖我们在 0.75% 带宽内的签名人。喂价过期时会停掉卖出和存款,而不是乱定价。
  • token 被暂停。 NVDA token 的发行方可以暂停它;暂停期间什么都动不了。
  • 钥匙。 报价、买方和收盘价钥匙是运营钥匙,不以明文文件放在服务器上。被滥用时受上面的卖出下限和 0.75% 带宽约束;丢了 只会让一周晚一点,之后任何人都能结算。keeper 自己的钥匙只付 gas。
  • 退出池没钱。 立即退出依赖它的库存;到期后取回不依赖。
  • 没有第三方审计。 合约做过内部审查和测试,包括在线上链的 fork 上测试。这不是审计。

合约​

Robinhood Chain(4663)。 从 edd7f09 部署,区块 84792706;链上代码已和这个 commit 的全新编译结果核对过。

金库合约地址
Vault0xe35B7D7bf1212b89478ddAba2946ADEd59BEC0a9
Desk0x6d17d089663e50823e29ad34D6e4EB2448BE8B0b
Desk operator(金库的 operator)0xCfC05f30773c761F122B92B9b5fBDb02BEA5F232
Oracle0x5A6bf55578E85b806910f0B6Ee8e683786fD62C6
Zap0x5AfdcE7484031e579Ff44c6499AfB6dd76819245
退出池0x8ac43fcc039612D40148f74f64835c23130029AF
HEDGE 门槛0x48ae41142bb0Ddd18DC49BD659b55207FAcE64d8
排期合约0x399D6c2c529531b9071B02522bd0Fbc90CcDb3Cb
Policy0x1bc4694aEdB4d844946d1B9e4021001cc83cb544
Settlement0xa9D051749bBa8A49d00fCdc0e54476c1f6df7Ec4

它们建立在:

地址
NVDA token0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
NVDA / USD Chainlink 喂价0x379EC4f7C378F34a1B47E4F3cbeBCbAC3E8E9F15
交易日历0xFcD3129E596B3C4577fb4129D61A90db52306461
NVDA / USDG 池0xd4EB21209C4D6093f80B5b84f5C45cc093EA14a3
HEDGE0x3f9108a3bECa998C14c6dda822a7e8EaEb88E20D
Owner Safe(2/3)0xB5C9e27F50599687eD141ABe337414B79061489b
期权买方0xFD3C304e2f51542D2c7CD038f43fba4b28301b8A

Robinhood Chain 测试网(46630)。 同一份源码,用测试 token 和测试喂价:

地址
Vault0xB60Ca23C68747eFeDF63c3429081ED418add64aC
Desk0xa0AE14695C29f7Ec59D79E456d407D254333374D
Oracle0xaF7B8E25ff5f6b4C90740B5B06c16f4Ef8f4d24b
Zap0xC5939A6FADADc36b091F39546573609011BF028F
退出池0x4b26073384fe4317e85cB587EE646aD1c15E029A
HEDGE 门槛0x7473f13f1e20FC59eeed224D1EbEC1548bdeE76A
排期合约0x8F44D16D898f16933E1A17f1743ab0cb1FbBF36a

源码:github.com/0xHedgeHood/hedgehood-vaults。实时参数和本周时间在 金库页面。