Enable ZIP 216 for blocks prior to NU5 activation
This commit is contained in:
parent
6c51df37b4
commit
458e773792
|
@ -1318,12 +1318,7 @@ bool ContextualCheckShieldedInputs(
|
||||||
if (!tx.vShieldedSpend.empty() ||
|
if (!tx.vShieldedSpend.empty() ||
|
||||||
!tx.vShieldedOutput.empty())
|
!tx.vShieldedOutput.empty())
|
||||||
{
|
{
|
||||||
// The nu5Active flag passed in here enables the new consensus rules from ZIP 216
|
auto ctx = sapling::init_verifier();
|
||||||
// (https://zips.z.cash/zip-0216#specification) on the following fields:
|
|
||||||
//
|
|
||||||
// - spendAuthSig in Sapling Spend descriptions
|
|
||||||
// - bindingSigSapling
|
|
||||||
auto ctx = sapling::init_verifier(nu5Active);
|
|
||||||
|
|
||||||
for (const SpendDescription &spend : tx.vShieldedSpend) {
|
for (const SpendDescription &spend : tx.vShieldedSpend) {
|
||||||
if (!ctx->check_spend(
|
if (!ctx->check_spend(
|
||||||
|
|
|
@ -23,7 +23,7 @@ mod ffi {
|
||||||
extern "Rust" {
|
extern "Rust" {
|
||||||
type Verifier;
|
type Verifier;
|
||||||
|
|
||||||
fn init_verifier(zip216_enabled: bool) -> Box<Verifier>;
|
fn init_verifier() -> Box<Verifier>;
|
||||||
fn check_spend(
|
fn check_spend(
|
||||||
&mut self,
|
&mut self,
|
||||||
cv: &[u8; 32],
|
cv: &[u8; 32],
|
||||||
|
@ -52,8 +52,11 @@ mod ffi {
|
||||||
|
|
||||||
struct Verifier(SaplingVerificationContext);
|
struct Verifier(SaplingVerificationContext);
|
||||||
|
|
||||||
fn init_verifier(zip216_enabled: bool) -> Box<Verifier> {
|
fn init_verifier() -> Box<Verifier> {
|
||||||
Box::new(Verifier(SaplingVerificationContext::new(zip216_enabled)))
|
// We consider ZIP 216 active all of the time because blocks prior to NU5
|
||||||
|
// activation (on mainnet and testnet) did not contain Sapling transactions
|
||||||
|
// that violated its canonicity rule.
|
||||||
|
Box::new(Verifier(SaplingVerificationContext::new(true)))
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Verifier {
|
impl Verifier {
|
||||||
|
|
Loading…
Reference in New Issue