Przeglądaj źródła

money-drk: updated with new Note fields

aggstam 3 lat temu
rodzic
commit
e0f106ce8e

+ 34 - 13
bin/drk/src/rpc_wallet.rs

@@ -24,10 +24,11 @@ use darkfi_money_contract::client::{
     Coin, Note, OwnCoin, MONEY_COINS_COL_COIN, MONEY_COINS_COL_COIN_BLIND,
     Coin, Note, OwnCoin, MONEY_COINS_COL_COIN, MONEY_COINS_COL_COIN_BLIND,
     MONEY_COINS_COL_IS_SPENT, MONEY_COINS_COL_LEAF_POSITION, MONEY_COINS_COL_MEMO,
     MONEY_COINS_COL_IS_SPENT, MONEY_COINS_COL_LEAF_POSITION, MONEY_COINS_COL_MEMO,
     MONEY_COINS_COL_NULLIFIER, MONEY_COINS_COL_SECRET, MONEY_COINS_COL_SERIAL,
     MONEY_COINS_COL_NULLIFIER, MONEY_COINS_COL_SECRET, MONEY_COINS_COL_SERIAL,
-    MONEY_COINS_COL_TOKEN_BLIND, MONEY_COINS_COL_TOKEN_ID, MONEY_COINS_COL_VALUE,
-    MONEY_COINS_COL_VALUE_BLIND, MONEY_COINS_TABLE, MONEY_INFO_COL_LAST_SCANNED_SLOT,
-    MONEY_INFO_TABLE, MONEY_KEYS_COL_IS_DEFAULT, MONEY_KEYS_COL_PUBLIC, MONEY_KEYS_COL_SECRET,
-    MONEY_KEYS_TABLE, MONEY_TREE_COL_TREE, MONEY_TREE_TABLE,
+    MONEY_COINS_COL_SPEND_HOOK, MONEY_COINS_COL_TOKEN_BLIND, MONEY_COINS_COL_TOKEN_ID,
+    MONEY_COINS_COL_USER_DATA, MONEY_COINS_COL_VALUE, MONEY_COINS_COL_VALUE_BLIND,
+    MONEY_COINS_TABLE, MONEY_INFO_COL_LAST_SCANNED_SLOT, MONEY_INFO_TABLE,
+    MONEY_KEYS_COL_IS_DEFAULT, MONEY_KEYS_COL_PUBLIC, MONEY_KEYS_COL_SECRET, MONEY_KEYS_TABLE,
+    MONEY_TREE_COL_TREE, MONEY_TREE_TABLE,
 };
 };
 use darkfi_sdk::{
 use darkfi_sdk::{
     crypto::{
     crypto::{
@@ -163,6 +164,10 @@ impl Drk {
             QueryType::Blob as u8,
             QueryType::Blob as u8,
             MONEY_COINS_COL_TOKEN_ID,
             MONEY_COINS_COL_TOKEN_ID,
             QueryType::Blob as u8,
             QueryType::Blob as u8,
+            MONEY_COINS_COL_SPEND_HOOK,
+            QueryType::Blob as u8,
+            MONEY_COINS_COL_USER_DATA,
+            QueryType::Blob as u8,
             MONEY_COINS_COL_COIN_BLIND,
             MONEY_COINS_COL_COIN_BLIND,
             QueryType::Blob as u8,
             QueryType::Blob as u8,
             MONEY_COINS_COL_VALUE_BLIND,
             MONEY_COINS_COL_VALUE_BLIND,
@@ -208,27 +213,43 @@ impl Drk {
             let token_id_bytes: Vec<u8> = serde_json::from_value(row[4].clone())?;
             let token_id_bytes: Vec<u8> = serde_json::from_value(row[4].clone())?;
             let token_id: TokenId = deserialize(&token_id_bytes)?;
             let token_id: TokenId = deserialize(&token_id_bytes)?;
 
 
-            let coin_blind_bytes: Vec<u8> = serde_json::from_value(row[5].clone())?;
+            let spend_hook_bytes: Vec<u8> = serde_json::from_value(row[5].clone())?;
+            let spend_hook: pallas::Base = deserialize(&spend_hook_bytes)?;
+
+            let user_data_bytes: Vec<u8> = serde_json::from_value(row[6].clone())?;
+            let user_data: pallas::Base = deserialize(&user_data_bytes)?;
+
+            let coin_blind_bytes: Vec<u8> = serde_json::from_value(row[7].clone())?;
             let coin_blind: pallas::Base = deserialize(&coin_blind_bytes)?;
             let coin_blind: pallas::Base = deserialize(&coin_blind_bytes)?;
 
 
-            let value_blind_bytes: Vec<u8> = serde_json::from_value(row[6].clone())?;
+            let value_blind_bytes: Vec<u8> = serde_json::from_value(row[8].clone())?;
             let value_blind: pallas::Scalar = deserialize(&value_blind_bytes)?;
             let value_blind: pallas::Scalar = deserialize(&value_blind_bytes)?;
 
 
-            let token_blind_bytes: Vec<u8> = serde_json::from_value(row[7].clone())?;
+            let token_blind_bytes: Vec<u8> = serde_json::from_value(row[9].clone())?;
             let token_blind: pallas::Scalar = deserialize(&token_blind_bytes)?;
             let token_blind: pallas::Scalar = deserialize(&token_blind_bytes)?;
 
 
-            let secret_bytes: Vec<u8> = serde_json::from_value(row[8].clone())?;
+            let secret_bytes: Vec<u8> = serde_json::from_value(row[10].clone())?;
             let secret: SecretKey = deserialize(&secret_bytes)?;
             let secret: SecretKey = deserialize(&secret_bytes)?;
 
 
-            let nullifier_bytes: Vec<u8> = serde_json::from_value(row[9].clone())?;
+            let nullifier_bytes: Vec<u8> = serde_json::from_value(row[11].clone())?;
             let nullifier: Nullifier = deserialize(&nullifier_bytes)?;
             let nullifier: Nullifier = deserialize(&nullifier_bytes)?;
 
 
-            let leaf_position_bytes: Vec<u8> = serde_json::from_value(row[10].clone())?;
+            let leaf_position_bytes: Vec<u8> = serde_json::from_value(row[12].clone())?;
             let leaf_position: incrementalmerkletree::Position = deserialize(&leaf_position_bytes)?;
             let leaf_position: incrementalmerkletree::Position = deserialize(&leaf_position_bytes)?;
 
 
-            let memo: Vec<u8> = serde_json::from_value(row[11].clone())?;
-
-            let note = Note { serial, value, token_id, coin_blind, value_blind, token_blind, memo };
+            let memo: Vec<u8> = serde_json::from_value(row[13].clone())?;
+
+            let note = Note {
+                serial,
+                value,
+                token_id,
+                spend_hook,
+                user_data,
+                coin_blind,
+                value_blind,
+                token_blind,
+                memo,
+            };
             let owncoin = OwnCoin { coin, note, secret, nullifier, leaf_position };
             let owncoin = OwnCoin { coin, note, secret, nullifier, leaf_position };
 
 
             owncoins.push((owncoin, is_spent))
             owncoins.push((owncoin, is_spent))

+ 2 - 0
src/contract/dao/tests/dao_harness.rs

@@ -21,6 +21,7 @@ use darkfi::{
     consensus::{
     consensus::{
         constants::{
         constants::{
             TESTNET_BOOTSTRAP_TIMESTAMP, TESTNET_GENESIS_HASH_BYTES, TESTNET_GENESIS_TIMESTAMP,
             TESTNET_BOOTSTRAP_TIMESTAMP, TESTNET_GENESIS_HASH_BYTES, TESTNET_GENESIS_TIMESTAMP,
+            TESTNET_INITIAL_DISTRIBUTION,
         },
         },
         ValidatorState, ValidatorStatePtr,
         ValidatorState, ValidatorStatePtr,
     },
     },
@@ -113,6 +114,7 @@ impl DaoTestHarness {
             *TESTNET_BOOTSTRAP_TIMESTAMP,
             *TESTNET_BOOTSTRAP_TIMESTAMP,
             *TESTNET_GENESIS_TIMESTAMP,
             *TESTNET_GENESIS_TIMESTAMP,
             *TESTNET_GENESIS_HASH_BYTES,
             *TESTNET_GENESIS_HASH_BYTES,
+            *TESTNET_INITIAL_DISTRIBUTION,
             alice_wallet,
             alice_wallet,
             faucet_pubkeys,
             faucet_pubkeys,
             false,
             false,

+ 2 - 0
src/contract/money/src/client.rs

@@ -85,6 +85,8 @@ pub const MONEY_COINS_COL_IS_SPENT: &str = "is_spent";
 pub const MONEY_COINS_COL_SERIAL: &str = "serial";
 pub const MONEY_COINS_COL_SERIAL: &str = "serial";
 pub const MONEY_COINS_COL_VALUE: &str = "value";
 pub const MONEY_COINS_COL_VALUE: &str = "value";
 pub const MONEY_COINS_COL_TOKEN_ID: &str = "token_id";
 pub const MONEY_COINS_COL_TOKEN_ID: &str = "token_id";
+pub const MONEY_COINS_COL_SPEND_HOOK: &str = "spend_hook";
+pub const MONEY_COINS_COL_USER_DATA: &str = "user_data";
 pub const MONEY_COINS_COL_COIN_BLIND: &str = "coin_blind";
 pub const MONEY_COINS_COL_COIN_BLIND: &str = "coin_blind";
 pub const MONEY_COINS_COL_VALUE_BLIND: &str = "value_blind";
 pub const MONEY_COINS_COL_VALUE_BLIND: &str = "value_blind";
 pub const MONEY_COINS_COL_TOKEN_BLIND: &str = "token_blind";
 pub const MONEY_COINS_COL_TOKEN_BLIND: &str = "token_blind";

+ 1 - 0
src/contract/money/tests/harness.rs

@@ -148,6 +148,7 @@ impl MoneyTestHarness {
             *TESTNET_BOOTSTRAP_TIMESTAMP,
             *TESTNET_BOOTSTRAP_TIMESTAMP,
             *TESTNET_GENESIS_TIMESTAMP,
             *TESTNET_GENESIS_TIMESTAMP,
             *TESTNET_GENESIS_HASH_BYTES,
             *TESTNET_GENESIS_HASH_BYTES,
+            *TESTNET_INITIAL_DISTRIBUTION,
             charlie_wallet,
             charlie_wallet,
             faucet_pubkeys.clone(),
             faucet_pubkeys.clone(),
             false,
             false,

+ 2 - 0
src/contract/money/wallet.sql

@@ -27,6 +27,8 @@ CREATE TABLE IF NOT EXISTS money_coins (
 	serial BLOB NOT NULL,
 	serial BLOB NOT NULL,
 	value BLOB NOT NULL,
 	value BLOB NOT NULL,
 	token_id BLOB NOT NULL,
 	token_id BLOB NOT NULL,
+	spend_hook BLOB NOT NULL,
+	user_data BLOB NOT NULL,
 	coin_blind BLOB NOT NULL,
 	coin_blind BLOB NOT NULL,
 	value_blind BLOB NOT NULL,
 	value_blind BLOB NOT NULL,
 	token_blind BLOB NOT NULL,
 	token_blind BLOB NOT NULL,