x 4 лет назад
Родитель
Сommit
007bd1d809
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      bin/daod/src/dao_contract/exec/validate.rs

+ 4 - 2
bin/daod/src/dao_contract/exec/validate.rs

@@ -123,6 +123,7 @@ pub fn state_transition(
     }
     }
 
 
     // 3. First item should be a Money::transfer() calldata
     // 3. First item should be a Money::transfer() calldata
+    // TODO: check func_id == money_contract::transfer::FUNC_ID
     let money_transfer_call_data = parent_tx.func_calls[0].call_data.as_any();
     let money_transfer_call_data = parent_tx.func_calls[0].call_data.as_any();
     let money_transfer_call_data =
     let money_transfer_call_data =
         money_transfer_call_data.downcast_ref::<money_contract::transfer::validate::CallData>();
         money_transfer_call_data.downcast_ref::<money_contract::transfer::validate::CallData>();
@@ -132,6 +133,7 @@ pub fn state_transition(
     {
     {
         return Err(Error::InvalidCallData)
         return Err(Error::InvalidCallData)
     }
     }
+    // TODO: then add those checks above here as an assert
 
 
     // 4. Money::transfer() has exactly 2 outputs
     // 4. Money::transfer() has exactly 2 outputs
     if money_transfer_call_data.outputs.len() != 2 {
     if money_transfer_call_data.outputs.len() != 2 {
@@ -147,9 +149,8 @@ pub fn state_transition(
         return Err(Error::InvalidOutput)
         return Err(Error::InvalidOutput)
     }
     }
 
 
-    let mut input_value_commits = pallas::Point::identity();
-
     // 2. sum of Money::transfer() calldata input_value_commits == our input value commit
     // 2. sum of Money::transfer() calldata input_value_commits == our input value commit
+    let mut input_value_commits = pallas::Point::identity();
     for input in &money_transfer_call_data.inputs {
     for input in &money_transfer_call_data.inputs {
         input_value_commits += input.revealed.value_commit;
         input_value_commits += input.revealed.value_commit;
     }
     }
@@ -167,6 +168,7 @@ pub fn state_transition(
     if proposal_votes.vote_commits != call_data.win_votes_commit {
     if proposal_votes.vote_commits != call_data.win_votes_commit {
         return Err(Error::InvalidVoteCommit)
         return Err(Error::InvalidVoteCommit)
     }
     }
+    // TODO: also check total_vote_commit
 
 
     Ok(Box::new(Update { proposal: call_data.proposal }))
     Ok(Box::new(Update { proposal: call_data.proposal }))
 }
 }