交易的发起者和交易额度从哪里获得

交易的发起者和交易额度从哪里获得?
ckb.rpc.getTransaction的input只能获取到上一份交易hash

额度:如果不包含 udt 等标准来说,它是 cell 的 capacity 的值
交易:始终是一些 cell(input) 死去,一些 cell(output) 生成

交易额度:所有 output 的 capacity 之和就是这次交易的有效转移值,input 之和减去 output 之和就是交易费

交易发起者的确定是一个比较复杂的东西,原因在于 ckb 的 lockscript 是可以用户定义的,如果不确定 lockscript 讨论这个问题将没有意义。

例如,用 ckb 内建的 secp256k1+black160 算法的 lock 来说:

  • lockscript 的 args 是 black160(pubkey)
  • transaction 的 witness 是用 recoverable 的 secp256k1 进行签名生成的 signature,验证过程就是恢复公钥过程,验证签名的过程,你只需要从交易的 witness 中恢复出公钥,即发起者的公钥

签名过程: https://github.com/nervosnetwork/ckb-system-scripts/wiki/How-to-sign-transaction
验证过程:https://github.com/nervosnetwork/ckb-system-scripts/blob/master/c/secp256k1_blake160_sighash_all.c

其他 lockscript 有它自己的逻辑,比如 pw-lock 使用了包括但不限于 eth 签名过程和验证过程,那 witness 恢复过程也就不一样