Просмотр исходного кода

Revert "contract: Move POW_REWARD constant to money contract"

This reverts commit 64c80377a2e3eabd2208548ab14e5cc5f9f7f4d7.

The constant is used for PoS rewards rather than PoW.
For PoW we can use the `expected_reward()` function.
parazyd 2 лет назад
Родитель
Сommit
b13464f27a

+ 8 - 8
src/contract/consensus/src/client/proposal_v1.rs

@@ -26,7 +26,7 @@ use darkfi::{
 };
 use darkfi_money_contract::{
     client::{ConsensusNote, ConsensusOwnCoin},
-    model::{Coin, ConsensusInput, ConsensusOutput, POW_REWARD},
+    model::{Coin, ConsensusInput, ConsensusOutput},
 };
 use darkfi_sdk::{
     blockchain::Slot,
@@ -43,8 +43,8 @@ use rand::rngs::OsRng;
 use crate::{
     client::common::{ConsensusBurnInputInfo, ConsensusMintOutputInfo},
     model::{
-        ConsensusProposalParamsV1, HEADSTART, MU_RHO_PREFIX, MU_Y_PREFIX, SECRET_KEY_PREFIX,
-        SEED_PREFIX, SERIAL_PREFIX,
+        ConsensusProposalParamsV1, HEADSTART, MU_RHO_PREFIX, MU_Y_PREFIX, REWARD,
+        SECRET_KEY_PREFIX, SEED_PREFIX, SERIAL_PREFIX,
     },
 };
 
@@ -166,7 +166,7 @@ impl ConsensusProposalCallBuilder {
             poseidon_hash([SERIAL_PREFIX, self.owncoin.secret.inner(), self.owncoin.note.serial]);
 
         let output = ConsensusMintOutputInfo {
-            value: self.owncoin.note.value + POW_REWARD,
+            value: self.owncoin.note.value + REWARD,
             epoch: 0, // We set the epoch as 0 here to eliminate a potential timelock
             public_key: output_keypair.public,
             value_blind: output_value_blind,
@@ -204,7 +204,7 @@ impl ConsensusProposalCallBuilder {
             value: output.value,
             epoch: output.epoch,
             value_blind: output.value_blind,
-            reward: POW_REWARD,
+            reward: REWARD,
             reward_blind: output_reward_blind,
         };
 
@@ -220,7 +220,7 @@ impl ConsensusProposalCallBuilder {
         let params = ConsensusProposalParamsV1 {
             input: tx_input,
             output: tx_output,
-            reward: POW_REWARD,
+            reward: REWARD,
             reward_blind: output_reward_blind,
             fork_hash: self.fork_hash,
             fork_previous_hash: self.fork_previous_hash,
@@ -322,7 +322,7 @@ fn create_proposal_proof(
         public_key,
         merkle_root,
         input_value_commit,
-        reward: POW_REWARD,
+        reward: REWARD,
         output_value_commit: pedersen_commitment_u64(output.value, output.value_blind),
         output_coin,
         vrf_proof: *vrf_proof,
@@ -340,7 +340,7 @@ fn create_proposal_proof(
         Witness::Base(Value::known(input.note.serial)),
         Witness::Base(Value::known(pallas::Base::from(input.note.value))),
         Witness::Base(Value::known(pallas::Base::from(input.note.epoch))),
-        Witness::Base(Value::known(pallas::Base::from(POW_REWARD))),
+        Witness::Base(Value::known(pallas::Base::from(REWARD))),
         Witness::Scalar(Value::known(input.value_blind)),
         Witness::Uint32(Value::known(u64::from(input.leaf_position).try_into().unwrap())),
         Witness::MerklePath(Value::known(input.merkle_path.clone().try_into().unwrap())),

+ 6 - 6
src/contract/consensus/src/entrypoint/proposal_v1.rs

@@ -17,10 +17,10 @@
  */
 
 use darkfi_money_contract::{
-    error::MoneyError, model::POW_REWARD, CONSENSUS_CONTRACT_INFO_TREE,
-    CONSENSUS_CONTRACT_NULLIFIERS_TREE, CONSENSUS_CONTRACT_STAKED_COINS_TREE,
-    CONSENSUS_CONTRACT_STAKED_COIN_LATEST_COIN_ROOT, CONSENSUS_CONTRACT_STAKED_COIN_MERKLE_TREE,
-    CONSENSUS_CONTRACT_STAKED_COIN_ROOTS_TREE, CONSENSUS_CONTRACT_ZKAS_PROPOSAL_NS_V1,
+    error::MoneyError, CONSENSUS_CONTRACT_INFO_TREE, CONSENSUS_CONTRACT_NULLIFIERS_TREE,
+    CONSENSUS_CONTRACT_STAKED_COINS_TREE, CONSENSUS_CONTRACT_STAKED_COIN_LATEST_COIN_ROOT,
+    CONSENSUS_CONTRACT_STAKED_COIN_MERKLE_TREE, CONSENSUS_CONTRACT_STAKED_COIN_ROOTS_TREE,
+    CONSENSUS_CONTRACT_ZKAS_PROPOSAL_NS_V1,
 };
 use darkfi_sdk::{
     blockchain::Slot,
@@ -39,7 +39,7 @@ use crate::{
     error::ConsensusError,
     model::{
         ConsensusProposalParamsV1, ConsensusProposalUpdateV1, GRACE_PERIOD, HEADSTART,
-        MU_RHO_PREFIX, MU_Y_PREFIX, REWARD_PALLAS,
+        MU_RHO_PREFIX, MU_Y_PREFIX, REWARD, REWARD_PALLAS,
     },
     ConsensusFunction,
 };
@@ -196,7 +196,7 @@ pub(crate) fn consensus_proposal_process_instruction_v1(
     // Here we check that input+reward == output
     let mut valcom_total = pallas::Point::identity();
     valcom_total += input.value_commit;
-    valcom_total += pedersen_commitment_u64(POW_REWARD, params.reward_blind);
+    valcom_total += pedersen_commitment_u64(REWARD, params.reward_blind);
     valcom_total -= output.value_commit;
     if valcom_total != pallas::Point::identity() {
         msg!("[ConsensusProposalV1] Error: Value commitments do not result in identity");

+ 2 - 0
src/contract/consensus/src/model.rs

@@ -104,6 +104,8 @@ pub const EPOCH_LENGTH: u64 = 10;
 pub const SLOT_TIME: u64 = 90;
 // Stake/Unstake timelock length in epochs
 pub const GRACE_PERIOD: u64 = calculate_grace_period();
+/// Configured block reward (1 DRK == 1 * 10^8)
+pub const REWARD: u64 = 100_000_000;
 /// Reward `pallas::Base`, calculated by: pallas::Base::from(REWARD)
 pub const REWARD_PALLAS: pallas::Base = pallas::Base::from_raw([100000000, 0, 0, 0]);
 /// Serial prefix, calculated by: pallas::Base::from(2)

+ 0 - 3
src/contract/money/src/model.rs

@@ -29,9 +29,6 @@ use darkfi_serial::{SerialDecodable, SerialEncodable};
 #[cfg(feature = "client")]
 use darkfi_serial::async_trait;
 
-/// Configured POW mining reward value (1 DRK == 1 * 10^8)
-pub const POW_REWARD: u64 = 100_000_000;
-
 /// A `Coin` represented in the Money state
 #[derive(Debug, Clone, Copy, Eq, PartialEq, SerialEncodable, SerialDecodable)]
 pub struct Coin(pallas::Base);

+ 1 - 6
src/contract/money/tests/integration.rs

@@ -18,7 +18,6 @@
 
 use darkfi::Result;
 use darkfi_contract_test_harness::{init_logger, Holder, TestHarness};
-use darkfi_money_contract::model::POW_REWARD;
 use log::info;
 
 #[test]
@@ -52,8 +51,7 @@ fn money_integration() -> Result<()> {
             .await?;
         }
 
-        let alice_owncoin =
-            th.gather_owncoin(&Holder::Alice, &alice_proposal_params.output, None)?;
+        let _ = th.gather_owncoin(&Holder::Alice, &alice_proposal_params.output, None)?;
 
         th.assert_trees(&HOLDERS);
         verification_slot += 1;
@@ -81,9 +79,6 @@ fn money_integration() -> Result<()> {
         verification_slot += 1;
         th.generate_slot(verification_slot).await?;
 
-        // Alice sends a payment of some DRK to Bob.
-        assert!(alice_owncoin.note.value == POW_REWARD);
-
         // Statistics
         th.statistics();
 

+ 4 - 5
src/contract/test-harness/src/consensus_proposal.rs

@@ -23,12 +23,11 @@ use darkfi::{
     Result,
 };
 use darkfi_consensus_contract::{
-    client::proposal_v1::ConsensusProposalCallBuilder, model::ConsensusProposalParamsV1,
+    client::proposal_v1::ConsensusProposalCallBuilder,
+    model::{ConsensusProposalParamsV1, REWARD},
     ConsensusFunction,
 };
-use darkfi_money_contract::{
-    client::ConsensusOwnCoin, model::POW_REWARD, CONSENSUS_CONTRACT_ZKAS_PROPOSAL_NS_V1,
-};
+use darkfi_money_contract::{client::ConsensusOwnCoin, CONSENSUS_CONTRACT_ZKAS_PROPOSAL_NS_V1};
 use darkfi_sdk::{
     blockchain::Slot,
     crypto::{MerkleNode, SecretKey, CONSENSUS_CONTRACT_ID},
@@ -156,7 +155,7 @@ impl TestHarness {
         )?;
 
         // Verify values match
-        assert!((staked_oc.note.value + POW_REWARD) == rewarded_staked_oc.note.value);
+        assert!((staked_oc.note.value + REWARD) == rewarded_staked_oc.note.value);
 
         Ok(rewarded_staked_oc)
     }