mirror of
				https://git.wownero.com/wownero/wownero.git
				synced 2024-08-15 01:03:23 +00:00 
			
		
		
		
	revert Preserve commitment format inside transactions #8277
This commit is contained in:
		
							parent
							
								
									6afdd7894a
								
							
						
					
					
						commit
						cf8e878869
					
				
					 4 changed files with 28 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -241,8 +241,15 @@ void BlockchainDB::add_transaction(const crypto::hash& blk_hash, const std::pair
 | 
			
		|||
    }
 | 
			
		||||
    else
 | 
			
		||||
    {
 | 
			
		||||
      rct::key commitment;
 | 
			
		||||
      if (tx.version > 1)
 | 
			
		||||
      {
 | 
			
		||||
        commitment = tx.rct_signatures.outPk[i].mask;
 | 
			
		||||
        if (rct::is_rct_bulletproof_plus(tx.rct_signatures.type))
 | 
			
		||||
          commitment = rct::scalarmult8(commitment);
 | 
			
		||||
      }
 | 
			
		||||
      amount_output_indices[i] = add_output(tx_hash, tx.vout[i], i, tx.unlock_time,
 | 
			
		||||
        tx.version > 1 ? &tx.rct_signatures.outPk[i].mask : NULL);
 | 
			
		||||
        tx.version > 1 ? &commitment : NULL);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  add_tx_amount_output_indices(tx_id, amount_output_indices);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -190,7 +190,7 @@ namespace cryptonote
 | 
			
		|||
          CHECK_AND_ASSERT_MES(n_amounts == rv.outPk.size(), false, "Internal error filling out V");
 | 
			
		||||
          rv.p.bulletproofs_plus[0].V.resize(n_amounts);
 | 
			
		||||
          for (size_t i = 0; i < n_amounts; ++i)
 | 
			
		||||
            rv.p.bulletproofs_plus[0].V[i] = rct::scalarmultKey(rv.outPk[i].mask, rct::INV_EIGHT);
 | 
			
		||||
            rv.p.bulletproofs_plus[0].V[i] = rv.outPk[i].mask;
 | 
			
		||||
        }
 | 
			
		||||
        else if (bulletproof)
 | 
			
		||||
        {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1195,7 +1195,10 @@ namespace rct {
 | 
			
		|||
                }
 | 
			
		||||
                for (i = 0; i < outamounts.size(); ++i)
 | 
			
		||||
                {
 | 
			
		||||
                    rv.outPk[i].mask = rct::scalarmult8(C[i]);
 | 
			
		||||
                    if (plus)
 | 
			
		||||
                        rv.outPk[i].mask = C[i];
 | 
			
		||||
                    else
 | 
			
		||||
                        rv.outPk[i].mask = rct::scalarmult8(C[i]);
 | 
			
		||||
                    outSk[i].mask = masks[i];
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
| 
						 | 
				
			
			@ -1233,7 +1236,10 @@ namespace rct {
 | 
			
		|||
                }
 | 
			
		||||
                for (i = 0; i < batch_size; ++i)
 | 
			
		||||
                {
 | 
			
		||||
                  rv.outPk[i + amounts_proved].mask = rct::scalarmult8(C[i]);
 | 
			
		||||
                  if (plus)
 | 
			
		||||
                    rv.outPk[i + amounts_proved].mask = C[i];
 | 
			
		||||
                  else
 | 
			
		||||
                    rv.outPk[i + amounts_proved].mask = rct::scalarmult8(C[i]);
 | 
			
		||||
                  outSk[i + amounts_proved].mask = masks[i];
 | 
			
		||||
                }
 | 
			
		||||
                amounts_proved += batch_size;
 | 
			
		||||
| 
						 | 
				
			
			@ -1439,7 +1445,10 @@ namespace rct {
 | 
			
		|||
 | 
			
		||||
          rct::keyV masks(rv.outPk.size());
 | 
			
		||||
          for (size_t i = 0; i < rv.outPk.size(); i++) {
 | 
			
		||||
            masks[i] = rv.outPk[i].mask;
 | 
			
		||||
            if (bulletproof_plus)
 | 
			
		||||
              masks[i] = rct::scalarmult8(rv.outPk[i].mask);
 | 
			
		||||
            else
 | 
			
		||||
              masks[i] = rv.outPk[i].mask;
 | 
			
		||||
          }
 | 
			
		||||
          key sumOutpks = addKeys(masks);
 | 
			
		||||
          DP(sumOutpks);
 | 
			
		||||
| 
						 | 
				
			
			@ -1599,6 +1608,8 @@ namespace rct {
 | 
			
		|||
        mask = ecdh_info.mask;
 | 
			
		||||
        key amount = ecdh_info.amount;
 | 
			
		||||
        key C = rv.outPk[i].mask;
 | 
			
		||||
        if (is_rct_bulletproof_plus(rv.type))
 | 
			
		||||
          C = scalarmult8(C);
 | 
			
		||||
        DP("C");
 | 
			
		||||
        DP(C);
 | 
			
		||||
        key Ctmp;
 | 
			
		||||
| 
						 | 
				
			
			@ -1630,6 +1641,8 @@ namespace rct {
 | 
			
		|||
        mask = ecdh_info.mask;
 | 
			
		||||
        key amount = ecdh_info.amount;
 | 
			
		||||
        key C = rv.outPk[i].mask;
 | 
			
		||||
        if (is_rct_bulletproof_plus(rv.type))
 | 
			
		||||
          C = scalarmult8(C);
 | 
			
		||||
        DP("C");
 | 
			
		||||
        DP(C);
 | 
			
		||||
        key Ctmp;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12367,7 +12367,9 @@ void wallet2::check_tx_key_helper(const cryptonote::transaction &tx, const crypt
 | 
			
		|||
        crypto::derivation_to_scalar(found_derivation, n, scalar1);
 | 
			
		||||
        rct::ecdhTuple ecdh_info = tx.rct_signatures.ecdhInfo[n];
 | 
			
		||||
        rct::ecdhDecode(ecdh_info, rct::sk2rct(scalar1), tx.rct_signatures.type == rct::RCTTypeBulletproof2 || tx.rct_signatures.type == rct::RCTTypeCLSAG || tx.rct_signatures.type == rct::RCTTypeBulletproofPlus);
 | 
			
		||||
        const rct::key C = tx.rct_signatures.outPk[n].mask;
 | 
			
		||||
        rct::key C = tx.rct_signatures.outPk[n].mask;
 | 
			
		||||
        if (rct::is_rct_bulletproof_plus(tx.rct_signatures.type))
 | 
			
		||||
          C = rct::scalarmult8(C);
 | 
			
		||||
        rct::key Ctmp;
 | 
			
		||||
        THROW_WALLET_EXCEPTION_IF(sc_check(ecdh_info.mask.bytes) != 0, error::wallet_internal_error, "Bad ECDH input mask");
 | 
			
		||||
        THROW_WALLET_EXCEPTION_IF(sc_check(ecdh_info.amount.bytes) != 0, error::wallet_internal_error, "Bad ECDH input amount");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue