Skip to content

Commit 28fb9a1

Browse files
fix(platform)!: unique token keeps history documents
1 parent 6161f75 commit 28fb9a1

File tree

7 files changed

+18
-53
lines changed
  • packages
    • rs-dpp/src
    • rs-drive-abci/tests/strategy_tests
    • rs-drive/src
      • drive/tokens/add_transaction_history_operations/v0
      • state_transition_action/batch/batched_transition/token_transition
      • verify/state_transition/verify_state_transition_was_executed_with_proof/v0
    • wasm-dpp/src/document/state_transition/batch_transition/token_transition

7 files changed

+18
-53
lines changed

packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -200,11 +200,7 @@ pub trait TokenTransitionV0Methods {
200200
token_history_contract: &'a DataContract,
201201
) -> Result<DocumentTypeRef<'a>, ProtocolError>;
202202
/// Historical document id
203-
fn historical_document_id(
204-
&self,
205-
owner_id: Identifier,
206-
owner_nonce: IdentityNonce,
207-
) -> Identifier;
203+
fn historical_document_id(&self, owner_id: Identifier) -> Identifier;
208204
fn associated_token_event(
209205
&self,
210206
token_configuration: &TokenConfiguration,
@@ -213,7 +209,6 @@ pub trait TokenTransitionV0Methods {
213209
/// Historical document id
214210
fn build_historical_document(
215211
&self,
216-
token_historical_contract: &DataContract,
217212
token_id: Identifier,
218213
owner_id: Identifier,
219214
owner_nonce: IdentityNonce,
@@ -327,24 +322,21 @@ impl TokenTransitionV0Methods for TokenTransition {
327322
}
328323

329324
/// Historical document id
330-
fn historical_document_id(
331-
&self,
332-
owner_id: Identifier,
333-
owner_nonce: IdentityNonce,
334-
) -> Identifier {
325+
fn historical_document_id(&self, owner_id: Identifier) -> Identifier {
326+
let token_id = self.token_id();
335327
let name = self.historical_document_type_name();
328+
let owner_nonce = self.identity_contract_nonce();
336329
Document::generate_document_id_v0(
337-
&(TOKEN_HISTORY_ID_BYTES.into()),
330+
&token_id,
338331
&owner_id,
339-
name,
332+
format!("history_{}", name).as_str(),
340333
owner_nonce.to_be_bytes().as_slice(),
341334
)
342335
}
343336

344337
/// Historical document id
345338
fn build_historical_document(
346339
&self,
347-
token_historical_contract: &DataContract,
348340
token_id: Identifier,
349341
owner_id: Identifier,
350342
owner_nonce: IdentityNonce,
@@ -354,7 +346,6 @@ impl TokenTransitionV0Methods for TokenTransition {
354346
) -> Result<Document, ProtocolError> {
355347
self.associated_token_event(token_configuration, owner_id)?
356348
.build_historical_document_owned(
357-
token_historical_contract,
358349
token_id,
359350
owner_id,
360351
owner_nonce,

packages/rs-dpp/src/tokens/token_event.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,16 @@ impl TokenEvent {
8080

8181
pub fn build_historical_document_owned(
8282
self,
83-
token_history_contract: &DataContract,
8483
token_id: Identifier,
8584
owner_id: Identifier,
8685
owner_nonce: IdentityNonce,
8786
block_info: &BlockInfo,
8887
platform_version: &PlatformVersion,
8988
) -> Result<Document, ProtocolError> {
9089
let document_id = Document::generate_document_id_v0(
91-
&token_history_contract.id(),
90+
&token_id,
9291
&owner_id,
93-
self.associated_document_type_name(),
92+
format!("history_{}", self.associated_document_type_name()).as_str(),
9493
owner_nonce.to_be_bytes().as_slice(),
9594
);
9695

packages/rs-drive-abci/tests/strategy_tests/verify_state_transitions.rs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@ use drive_abci::platform_types::platform::PlatformRef;
2222
use drive_abci::rpc::core::MockCoreRPCLike;
2323
use tenderdash_abci::proto::abci::ExecTxResult;
2424
use dpp::block::extended_block_info::v0::ExtendedBlockInfoV0Getters;
25-
use dpp::data_contract::associated_token::token_configuration::accessors::v0::TokenConfigurationV0Getters;
2625
use dpp::data_contracts::SystemDataContract;
2726
use dpp::document::serialization_traits::DocumentPlatformConversionMethodsV0;
28-
use dpp::prelude::Identifier;
2927
use dpp::voting::votes::Vote;
3028
use drive::drive::votes::resolved::vote_polls::ResolvedVotePoll;
3129
use drive::drive::votes::resolved::votes::resolved_resource_vote::accessors::v0::ResolvedResourceVoteGettersV0;
@@ -285,12 +283,7 @@ pub(crate) fn verify_state_transitions_were_or_were_not_executed(
285283
.to_string(),
286284
document_type_keeps_history: false,
287285
document_id: token_transition_action
288-
.historical_document_id(
289-
batch_transition.owner_id(),
290-
token_transition_action
291-
.base()
292-
.identity_contract_nonce(),
293-
)
286+
.historical_document_id(batch_transition.owner_id())
294287
.to_vec(),
295288
document_contested_status: 0,
296289
},
@@ -532,12 +525,7 @@ pub(crate) fn verify_state_transitions_were_or_were_not_executed(
532525
document_type_name,
533526
document_type_keeps_history: false,
534527
document_id: token_transition_action
535-
.historical_document_id(
536-
batch_transition.owner_id(),
537-
token_transition_action
538-
.base()
539-
.identity_contract_nonce(),
540-
)
528+
.historical_document_id(batch_transition.owner_id())
541529
.to_buffer(),
542530
block_time_ms: None, //None because we want latest
543531
contested_status:
@@ -566,7 +554,6 @@ pub(crate) fn verify_state_transitions_were_or_were_not_executed(
566554

567555
let expected_document = token_transition_action
568556
.build_historical_document(
569-
&token_history,
570557
token_id,
571558
batch_transition.owner_id(),
572559
token_transition_action

packages/rs-drive/src/drive/tokens/add_transaction_history_operations/v0/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ impl Drive {
3232
let document_type = event.associated_document_type(&contract)?;
3333

3434
let document = event.build_historical_document_owned(
35-
&contract,
3635
token_id,
3736
owner_id,
3837
owner_nonce,

packages/rs-drive/src/state_transition_action/batch/batched_transition/token_transition/mod.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -128,24 +128,21 @@ impl TokenTransitionAction {
128128
}
129129

130130
/// Historical document id
131-
pub fn historical_document_id(
132-
&self,
133-
owner_id: Identifier,
134-
owner_nonce: IdentityNonce,
135-
) -> Identifier {
131+
pub fn historical_document_id(&self, owner_id: Identifier) -> Identifier {
132+
let token_id = self.base().token_id();
136133
let name = self.historical_document_type_name();
134+
let owner_nonce = self.base().identity_contract_nonce();
137135
Document::generate_document_id_v0(
138-
&SystemDataContract::TokenHistory.id(),
136+
&token_id,
139137
&owner_id,
140-
name,
138+
format!("history_{}", name).as_str(),
141139
owner_nonce.to_be_bytes().as_slice(),
142140
)
143141
}
144142

145143
/// Historical document id
146144
pub fn build_historical_document(
147145
&self,
148-
token_historical_contract: &DataContract,
149146
token_id: Identifier,
150147
owner_id: Identifier,
151148
owner_nonce: IdentityNonce,
@@ -154,7 +151,6 @@ impl TokenTransitionAction {
154151
) -> Result<Document, Error> {
155152
self.associated_token_event()
156153
.build_historical_document_owned(
157-
token_historical_contract,
158154
token_id,
159155
owner_id,
160156
owner_nonce,

packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ impl Drive {
335335
document_type_name: token_history_document_type_name,
336336
document_type_keeps_history: false,
337337
document_id: token_transition
338-
.historical_document_id(owner_id, identity_contract_nonce)
338+
.historical_document_id(owner_id)
339339
.to_buffer(),
340340
block_time_ms: None, //None because we want latest
341341
contested_status:
@@ -352,7 +352,6 @@ impl Drive {
352352
let document = document.ok_or(Error::Proof(ProofError::IncorrectProof(format!("proof did not contain document with id {} expected to exist because the token keeps historical documents", token_transition.historical_document_type_name()))))?;
353353

354354
let expected_document = token_transition.build_historical_document(
355-
&token_history_contract,
356355
token_id,
357356
owner_id,
358357
identity_contract_nonce,

packages/wasm-dpp/src/document/state_transition/batch_transition/token_transition/mod.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,8 @@ impl TokenTransitionWasm {
103103
}
104104

105105
#[wasm_bindgen(js_name=getHistoricalDocumentId)]
106-
pub fn historical_document_id(
107-
&self,
108-
owner_id: IdentifierWrapper,
109-
owner_nonce: IdentityNonce,
110-
) -> IdentifierWrapper {
111-
self.0
112-
.historical_document_id(owner_id.into(), owner_nonce)
113-
.into()
106+
pub fn historical_document_id(&self, owner_id: IdentifierWrapper) -> IdentifierWrapper {
107+
self.0.historical_document_id(owner_id.into()).into()
114108
}
115109

116110
#[wasm_bindgen(js_name=getIdentityContractNonce)]

0 commit comments

Comments
 (0)