@dashevo/wasm-dpp 0.25.0-dev.1 → 0.25.0-dev.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/wasm/wasm_dpp.d.ts +431 -436
  2. package/dist/wasm/wasm_dpp.js +39 -44
  3. package/dist/wasm/wasm_dpp_bg.js +1 -1
  4. package/lib/test/fixtures/getDocumentsFixture.js +5 -1
  5. package/lib/wasm/wasm_dpp.d.ts +431 -436
  6. package/package.json +3 -3
  7. package/src/dash_platform_protocol.rs +1 -1
  8. package/src/data_contract/data_contract.rs +2 -1
  9. package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +6 -5
  10. package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +6 -5
  11. package/src/document/extended_document.rs +2 -2
  12. package/src/document/state_transition/document_batch_transition/mod.rs +6 -9
  13. package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +6 -6
  14. package/src/identity/factory_utils.rs +4 -4
  15. package/src/identity/mod.rs +4 -2
  16. package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +11 -19
  17. package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
  18. package/src/identity/state_transition/identity_public_key_transitions.rs +10 -10
  19. package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +7 -15
  20. package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
  21. package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +10 -18
  22. package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
  23. package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
  24. package/src/state_transition/state_transition_facade.rs +3 -7
  25. package/src/state_transition/validation/validate_state_transition_identity_signature.rs +20 -6
  26. package/test/integration/dataContract/DataContractFacade.spec.js +17 -20
  27. package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +5 -4
  28. package/test/integration/stateTransition/StateTransitionFacade.spec.js +1 -1
  29. package/test/unit/dataContract/DataContract.spec.js +9 -21
  30. package/test/unit/dataContract/DataContractFactory.spec.js +19 -28
  31. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +2 -4
  32. package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +6 -5
  33. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -5
  34. package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +5 -4
  35. package/test/unit/decodeProtocolEntityFactory.spec.js +4 -1
  36. package/test/unit/document/Document.spec.js +9 -7
  37. package/test/unit/document/DocumentFactory.spec.js +38 -90
  38. package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +2 -3
  39. package/test/unit/identity/Identity.spec.js +3 -8
  40. package/test/unit/identity/IdentityFactory.spec.js +3 -4
  41. package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +2 -2
  42. package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +4 -16
  43. package/test/unit/stateTransition/validation/validateStateTransitionIdentitySignatureFactory.spec.js +8 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dashevo/wasm-dpp",
3
- "version": "0.25.0-dev.1",
3
+ "version": "0.25.0-dev.11",
4
4
  "description": "The JavaScript implementation of the Dash Platform Protocol",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -44,8 +44,8 @@
44
44
  "@babel/core": "^7.15.5",
45
45
  "@babel/preset-env": "^7.15.4",
46
46
  "@dashevo/dashcore-lib": "~0.20.3",
47
- "@dashevo/dpns-contract": "0.25.0-dev.1",
48
- "@dashevo/dpp": "0.25.0-dev.1",
47
+ "@dashevo/dpns-contract": "0.25.0-dev.11",
48
+ "@dashevo/dpp": "0.25.0-dev.11",
49
49
  "@dashevo/wasm-re2": "~1.0.2",
50
50
  "@types/bs58": "^4.0.1",
51
51
  "@types/node": "^14.6.0",
@@ -51,7 +51,7 @@ impl DashPlatformProtocol {
51
51
  // "attempted to set a logger after the logging system was already initialized"
52
52
  // Usage of unsafe is fine here as we are in a single-threaded JS environment
53
53
  unsafe {
54
- if cfg!(LOGGER_INITIALIZED) && !LOGGER_INITIALIZED {
54
+ if !LOGGER_INITIALIZED {
55
55
  LOGGER_INITIALIZED = true;
56
56
  wasm_logger::init(wasm_logger::Config::new(log::Level::Debug));
57
57
  }
@@ -11,6 +11,7 @@ use dpp::data_contract::{DataContract, SCHEMA_URI};
11
11
  use dpp::platform_value::string_encoding::Encoding;
12
12
  use dpp::platform_value::{Bytes32, Value};
13
13
 
14
+ use dpp::serialization_traits::PlatformSerializable;
14
15
  use dpp::{platform_value, Convertible};
15
16
 
16
17
  use crate::errors::RustConversionError;
@@ -303,7 +304,7 @@ impl DataContractWasm {
303
304
 
304
305
  #[wasm_bindgen(js_name=toBuffer)]
305
306
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
306
- let bytes = self.0.to_cbor_buffer().with_js_error()?;
307
+ let bytes = PlatformSerializable::serialize(&self.0).with_js_error()?;
307
308
  Ok(Buffer::from_bytes(&bytes))
308
309
  }
309
310
 
@@ -8,6 +8,8 @@ pub use validation::*;
8
8
 
9
9
  use dpp::consensus::signature::SignatureError;
10
10
  use dpp::consensus::ConsensusError;
11
+ use dpp::serialization_traits::PlatformSerializable;
12
+ use dpp::state_transition::StateTransition;
11
13
  use dpp::{
12
14
  data_contract::state_transition::data_contract_create_transition::DataContractCreateTransition,
13
15
  platform_value,
@@ -107,11 +109,10 @@ impl DataContractCreateTransitionWasm {
107
109
  }
108
110
 
109
111
  #[wasm_bindgen(js_name=toBuffer)]
110
- pub fn to_buffer(&self, skip_signature: Option<bool>) -> Result<Buffer, JsValue> {
111
- let bytes = self
112
- .0
113
- .to_cbor_buffer(skip_signature.unwrap_or(false))
114
- .with_js_error()?;
112
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
113
+ let bytes =
114
+ PlatformSerializable::serialize(&StateTransition::DataContractCreate(self.0.clone()))
115
+ .with_js_error()?;
115
116
  Ok(Buffer::from_bytes(&bytes))
116
117
  }
117
118
 
@@ -7,6 +7,8 @@ pub use apply::*;
7
7
  pub use validation::*;
8
8
 
9
9
  use dpp::consensus::ConsensusError;
10
+ use dpp::serialization_traits::PlatformSerializable;
11
+ use dpp::state_transition::StateTransition;
10
12
  use dpp::{
11
13
  consensus::signature::SignatureError,
12
14
  data_contract::state_transition::data_contract_update_transition::DataContractUpdateTransition,
@@ -109,11 +111,10 @@ impl DataContractUpdateTransitionWasm {
109
111
  }
110
112
 
111
113
  #[wasm_bindgen(js_name=toBuffer)]
112
- pub fn to_buffer(&self, skip_signature: Option<bool>) -> Result<Buffer, JsValue> {
113
- let bytes = self
114
- .0
115
- .to_cbor_buffer(skip_signature.unwrap_or(false))
116
- .with_js_error()?;
114
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
115
+ let bytes =
116
+ PlatformSerializable::serialize(&StateTransition::DataContractUpdate(self.0.clone()))
117
+ .with_js_error()?;
117
118
  Ok(Buffer::from_bytes(&bytes))
118
119
  }
119
120
 
@@ -7,6 +7,7 @@ use dpp::util::json_schema::JsonSchemaExt;
7
7
  use dpp::util::json_value::JsonValueExt;
8
8
 
9
9
  use dpp::platform_value::converter::serde_json::BTreeValueJsonConverter;
10
+ use dpp::serialization_traits::PlatformSerializable;
10
11
  use dpp::ProtocolError;
11
12
  use serde::{Deserialize, Serialize};
12
13
  use std::convert::TryInto;
@@ -325,8 +326,7 @@ impl ExtendedDocumentWasm {
325
326
 
326
327
  #[wasm_bindgen(js_name=toBuffer)]
327
328
  pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
328
- let bytes = self.0.to_cbor_buffer().with_js_error()?;
329
-
329
+ let bytes = PlatformSerializable::serialize(&self.0.clone()).with_js_error()?;
330
330
  Ok(Buffer::from_bytes(&bytes))
331
331
  }
332
332
 
@@ -19,6 +19,8 @@ use serde::{Deserialize, Serialize};
19
19
  use dpp::consensus::signature::SignatureError;
20
20
  use dpp::consensus::ConsensusError;
21
21
  use dpp::platform_value::{BinaryData, ReplacementType};
22
+ use dpp::serialization_traits::PlatformSerializable;
23
+ use dpp::state_transition::StateTransition;
22
24
  use wasm_bindgen::prelude::*;
23
25
 
24
26
  use crate::{
@@ -369,15 +371,10 @@ impl DocumentsBatchTransitionWasm {
369
371
  }
370
372
 
371
373
  #[wasm_bindgen(js_name=toBuffer)]
372
- pub fn to_buffer(&self, options: &JsValue) -> Result<Buffer, JsValue> {
373
- let skip_signature = if options.is_object() {
374
- let options = options.with_serde_to_json_value()?;
375
- options.get_bool("skipSignature").unwrap_or_default()
376
- } else {
377
- false
378
- };
379
- let bytes = self.0.to_cbor_buffer(skip_signature).with_js_error()?;
380
-
374
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
375
+ let bytes =
376
+ PlatformSerializable::serialize(&StateTransition::DocumentsBatch(self.0.clone()))
377
+ .with_js_error()?;
381
378
  Ok(Buffer::from_bytes(&bytes))
382
379
  }
383
380
 
@@ -25,12 +25,12 @@ impl InvalidSignaturePublicKeySecurityLevelErrorWasm {
25
25
  }
26
26
 
27
27
  #[wasm_bindgen(js_name=getKeySecurityLevelRequirement)]
28
- pub fn get_allowed_key_security_levels(&self) -> Vec<u8> {
29
- self.inner
30
- .allowed_key_security_levels()
31
- .iter()
32
- .map(|security_level| *security_level as u8)
33
- .collect()
28
+ pub fn get_allowed_key_security_levels(&self) -> js_sys::Array {
29
+ let array = js_sys::Array::new();
30
+ for security_level in self.inner.allowed_key_security_levels() {
31
+ array.push(&JsValue::from(security_level as u32));
32
+ }
33
+ array
34
34
  }
35
35
 
36
36
  #[wasm_bindgen(js_name=getCode)]
@@ -3,7 +3,7 @@ use crate::identity::identity_public_key_transitions::IdentityPublicKeyWithWitne
3
3
  use crate::utils::{generic_of_js_val, to_vec_of_platform_values};
4
4
  use crate::{create_asset_lock_proof_from_wasm_instance, IdentityPublicKeyWasm};
5
5
  use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
6
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
6
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
7
7
  use dpp::identity::{IdentityPublicKey, KeyID};
8
8
  use std::collections::BTreeMap;
9
9
  use wasm_bindgen::__rt::Ref;
@@ -26,7 +26,7 @@ pub fn parse_create_args(
26
26
  Ok((asset_lock_proof, public_keys))
27
27
  }
28
28
 
29
- type AddPublicKeys = Option<Vec<IdentityPublicKeyInCreationWithWitness>>;
29
+ type AddPublicKeys = Option<Vec<IdentityPublicKeyInCreation>>;
30
30
  type DisablePublicKeys = Option<Vec<KeyID>>;
31
31
 
32
32
  pub fn parse_create_identity_update_transition_keys(
@@ -44,7 +44,7 @@ pub fn parse_create_identity_update_transition_keys(
44
44
  .to_js_value()
45
45
  })?;
46
46
 
47
- let keys: Vec<IdentityPublicKeyInCreationWithWitness> = add_public_keys_array
47
+ let keys: Vec<IdentityPublicKeyInCreation> = add_public_keys_array
48
48
  .iter()
49
49
  .map(|key| {
50
50
  let public_key: Ref<IdentityPublicKeyWithWitnessWasm> =
@@ -55,7 +55,7 @@ pub fn parse_create_identity_update_transition_keys(
55
55
 
56
56
  Ok(public_key.clone().into())
57
57
  })
58
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
58
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
59
59
 
60
60
  add_public_keys = Some(keys)
61
61
  }
@@ -12,6 +12,7 @@ use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
12
12
  use dpp::identity::IdentityPublicKey;
13
13
  use dpp::identity::{Identity, KeyID};
14
14
  use dpp::metadata::Metadata;
15
+ use dpp::serialization_traits::PlatformSerializable;
15
16
  use dpp::{Convertible, ProtocolError};
16
17
 
17
18
  use crate::identifier::IdentifierWrapper;
@@ -212,8 +213,9 @@ impl IdentityWasm {
212
213
  }
213
214
 
214
215
  #[wasm_bindgen(js_name=toBuffer)]
215
- pub fn to_buffer(&self) -> Vec<u8> {
216
- self.0.to_cbor_buffer().unwrap()
216
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
217
+ let bytes = PlatformSerializable::serialize(&self.0.clone()).with_js_error()?;
218
+ Ok(Buffer::from_bytes(&bytes))
217
219
  }
218
220
 
219
221
  #[wasm_bindgen]
@@ -18,17 +18,17 @@ use crate::{
18
18
  };
19
19
 
20
20
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
21
- use crate::errors::from_dpp_err;
22
- use dpp::state_transition::StateTransitionConvert;
21
+ use dpp::state_transition::StateTransition;
23
22
 
24
23
  use crate::utils::{generic_of_js_val, ToSerdeJSONExt, WithJsError};
25
24
  use dpp::identity::KeyType;
26
25
  use dpp::platform_value::string_encoding::Encoding;
27
26
  use dpp::platform_value::{string_encoding, BinaryData};
27
+ use dpp::serialization_traits::PlatformSerializable;
28
28
  use dpp::{
29
29
  identity::state_transition::{
30
30
  asset_lock_proof::AssetLockProof, identity_create_transition::IdentityCreateTransition,
31
- identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
31
+ identity_public_key_transitions::IdentityPublicKeyInCreation,
32
32
  },
33
33
  state_transition::StateTransitionLike,
34
34
  };
@@ -104,7 +104,7 @@ impl IdentityCreateTransitionWasm {
104
104
  )?;
105
105
  Ok(public_key.clone().into())
106
106
  })
107
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
107
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
108
108
 
109
109
  self.0.set_public_keys(public_keys);
110
110
 
@@ -123,7 +123,7 @@ impl IdentityCreateTransitionWasm {
123
123
  )?;
124
124
  Ok(public_key.clone().into())
125
125
  })
126
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
126
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
127
127
 
128
128
  self.0.add_public_keys(&mut public_keys);
129
129
 
@@ -135,7 +135,7 @@ impl IdentityCreateTransitionWasm {
135
135
  self.0
136
136
  .get_public_keys()
137
137
  .iter()
138
- .map(IdentityPublicKeyInCreationWithWitness::to_owned)
138
+ .map(IdentityPublicKeyInCreation::to_owned)
139
139
  .map(IdentityPublicKeyWithWitnessWasm::from)
140
140
  .map(JsValue::from)
141
141
  .collect()
@@ -228,19 +228,11 @@ impl IdentityCreateTransitionWasm {
228
228
  }
229
229
 
230
230
  #[wasm_bindgen(js_name=toBuffer)]
231
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
232
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
233
- with_js_error!(serde_wasm_bindgen::from_value(options))?
234
- } else {
235
- Default::default()
236
- };
237
-
238
- let buffer = self
239
- .0
240
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
241
- .map_err(from_dpp_err)?;
242
-
243
- Ok(Buffer::from_bytes(&buffer).into())
231
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
232
+ let bytes =
233
+ PlatformSerializable::serialize(&StateTransition::IdentityCreate(self.0.clone()))
234
+ .with_js_error()?;
235
+ Ok(Buffer::from_bytes(&bytes))
244
236
  }
245
237
 
246
238
  #[wasm_bindgen(js_name=toJSON)]
@@ -1,5 +1,5 @@
1
1
  use dpp::identity::state_transition::asset_lock_proof::AssetLockProof;
2
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
2
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
3
3
  use dpp::{
4
4
  identifier::Identifier,
5
5
  identity::state_transition::identity_create_transition::IdentityCreateTransition,
@@ -20,7 +20,7 @@ pub struct ToObject {
20
20
  pub protocol_version: u32,
21
21
  pub identity_id: Identifier,
22
22
  pub asset_lock_proof: AssetLockProof,
23
- pub public_keys: Vec<IdentityPublicKeyInCreationWithWitness>,
23
+ pub public_keys: Vec<IdentityPublicKeyInCreation>,
24
24
  pub signature: Option<Vec<u8>>,
25
25
  }
26
26
 
@@ -1,7 +1,7 @@
1
1
  //todo: move this file to transition
2
2
  use dpp::dashcore::anyhow;
3
3
  use dpp::document::document_transition::document_base_transition::JsonValue;
4
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
4
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
5
5
  use dpp::platform_value::BinaryData;
6
6
  use dpp::Convertible;
7
7
  pub use serde::{Deserialize, Serialize};
@@ -20,7 +20,7 @@ struct ToObjectOptions {
20
20
 
21
21
  #[wasm_bindgen(js_name=IdentityPublicKeyWithWitness)]
22
22
  #[derive(Serialize, Deserialize, Debug, Clone)]
23
- pub struct IdentityPublicKeyWithWitnessWasm(IdentityPublicKeyInCreationWithWitness);
23
+ pub struct IdentityPublicKeyWithWitnessWasm(IdentityPublicKeyInCreation);
24
24
 
25
25
  #[wasm_bindgen(js_class = IdentityPublicKeyWithWitness)]
26
26
  impl IdentityPublicKeyWithWitnessWasm {
@@ -29,7 +29,7 @@ impl IdentityPublicKeyWithWitnessWasm {
29
29
  let data_string = utils::stringify(&raw_public_key)?;
30
30
  let value: JsonValue = serde_json::from_str(&data_string).map_err(|e| e.to_string())?;
31
31
 
32
- let pk = IdentityPublicKeyInCreationWithWitness::from_json_object(value).with_js_error()?;
32
+ let pk = IdentityPublicKeyInCreation::from_json_object(value).with_js_error()?;
33
33
 
34
34
  Ok(IdentityPublicKeyWithWitnessWasm(pk))
35
35
  }
@@ -174,21 +174,21 @@ impl IdentityPublicKeyWithWitnessWasm {
174
174
  }
175
175
 
176
176
  impl IdentityPublicKeyWithWitnessWasm {
177
- pub fn into_inner(self) -> IdentityPublicKeyInCreationWithWitness {
177
+ pub fn into_inner(self) -> IdentityPublicKeyInCreation {
178
178
  self.0
179
179
  }
180
180
 
181
- pub fn inner(&self) -> &IdentityPublicKeyInCreationWithWitness {
181
+ pub fn inner(&self) -> &IdentityPublicKeyInCreation {
182
182
  &self.0
183
183
  }
184
184
 
185
- pub fn inner_mut(&mut self) -> &mut IdentityPublicKeyInCreationWithWitness {
185
+ pub fn inner_mut(&mut self) -> &mut IdentityPublicKeyInCreation {
186
186
  &mut self.0
187
187
  }
188
188
  }
189
189
 
190
- impl From<IdentityPublicKeyInCreationWithWitness> for IdentityPublicKeyWithWitnessWasm {
191
- fn from(v: IdentityPublicKeyInCreationWithWitness) -> Self {
190
+ impl From<IdentityPublicKeyInCreation> for IdentityPublicKeyWithWitnessWasm {
191
+ fn from(v: IdentityPublicKeyInCreation) -> Self {
192
192
  IdentityPublicKeyWithWitnessWasm(v)
193
193
  }
194
194
  }
@@ -200,12 +200,12 @@ impl TryFrom<JsValue> for IdentityPublicKeyWithWitnessWasm {
200
200
  let str = String::from(js_sys::JSON::stringify(&value)?);
201
201
  let val = serde_json::from_str(&str).map_err(|e| from_dpp_err(e.into()))?;
202
202
  Ok(Self(
203
- IdentityPublicKeyInCreationWithWitness::from_raw_json_object(val).with_js_error()?,
203
+ IdentityPublicKeyInCreation::from_raw_json_object(val).with_js_error()?,
204
204
  ))
205
205
  }
206
206
  }
207
207
 
208
- impl From<IdentityPublicKeyWithWitnessWasm> for IdentityPublicKeyInCreationWithWitness {
208
+ impl From<IdentityPublicKeyWithWitnessWasm> for IdentityPublicKeyInCreation {
209
209
  fn from(pk: IdentityPublicKeyWithWitnessWasm) -> Self {
210
210
  pk.0
211
211
  }
@@ -19,11 +19,11 @@ use crate::{
19
19
 
20
20
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
21
21
 
22
- use crate::errors::from_dpp_err;
23
22
  use dpp::identity::KeyType;
24
23
  use dpp::platform_value::string_encoding::Encoding;
25
24
  use dpp::platform_value::{string_encoding, BinaryData};
26
- use dpp::state_transition::StateTransitionConvert;
25
+ use dpp::serialization_traits::PlatformSerializable;
26
+ use dpp::state_transition::StateTransition;
27
27
  use dpp::{
28
28
  identifier::Identifier,
29
29
  identity::state_transition::{
@@ -169,19 +169,11 @@ impl IdentityTopUpTransitionWasm {
169
169
  }
170
170
 
171
171
  #[wasm_bindgen(js_name=toBuffer)]
172
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
173
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
174
- with_js_error!(serde_wasm_bindgen::from_value(options))?
175
- } else {
176
- Default::default()
177
- };
178
-
179
- let buffer = self
180
- .0
181
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
182
- .map_err(from_dpp_err)?;
183
-
184
- Ok(Buffer::from_bytes(&buffer).into())
172
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
173
+ let bytes =
174
+ PlatformSerializable::serialize(&StateTransition::IdentityTopUp(self.0.clone()))
175
+ .with_js_error()?;
176
+ Ok(Buffer::from_bytes(&bytes))
185
177
  }
186
178
 
187
179
  #[wasm_bindgen(js_name=toJSON)]
@@ -2,7 +2,7 @@ use crate::errors::from_dpp_err;
2
2
  use crate::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyWithWitnessWasm;
3
3
  use crate::utils::WithJsError;
4
4
  use crate::validation::ValidationResultWasm;
5
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
5
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
6
6
  use dpp::identity::state_transition::identity_update_transition::validate_public_keys::IdentityUpdatePublicKeysValidator;
7
7
  use dpp::identity::validation::TPublicKeysValidator;
8
8
  use dpp::platform_value::Value;
@@ -31,7 +31,7 @@ impl IdentityUpdatePublicKeysValidatorWasm {
31
31
  let public_keys = raw_public_keys
32
32
  .into_iter()
33
33
  .map(|raw_key| {
34
- let parsed_key: IdentityPublicKeyInCreationWithWitness =
34
+ let parsed_key: IdentityPublicKeyInCreation =
35
35
  IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
36
36
 
37
37
  parsed_key.to_raw_object(false).with_js_error()
@@ -16,16 +16,16 @@ use crate::{
16
16
 
17
17
  use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
18
18
 
19
- use crate::errors::from_dpp_err;
20
19
  use crate::utils::{generic_of_js_val, WithJsError};
21
20
 
22
21
  use dpp::consensus::ConsensusError;
23
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
22
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
24
23
  use dpp::identity::{KeyID, KeyType, TimestampMillis};
25
24
  use dpp::platform_value::string_encoding::Encoding;
26
25
  use dpp::platform_value::{string_encoding, BinaryData, Value};
27
26
  use dpp::prelude::Revision;
28
- use dpp::state_transition::{StateTransitionConvert, StateTransitionIdentitySigned};
27
+ use dpp::serialization_traits::PlatformSerializable;
28
+ use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned};
29
29
  use dpp::{
30
30
  identifier::Identifier,
31
31
  identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
@@ -44,7 +44,7 @@ struct IdentityUpdateTransitionParams {
44
44
  protocol_version: u32,
45
45
  identity_id: Vec<u8>,
46
46
  revision: Revision,
47
- add_public_keys: Option<Vec<IdentityPublicKeyInCreationWithWitness>>,
47
+ add_public_keys: Option<Vec<IdentityPublicKeyInCreation>>,
48
48
  disable_public_keys: Option<Vec<KeyID>>,
49
49
  public_keys_disabled_at: Option<TimestampMillis>,
50
50
  }
@@ -103,7 +103,7 @@ impl IdentityUpdateTransitionWasm {
103
103
  )?;
104
104
  Ok(public_key.clone().into())
105
105
  })
106
- .collect::<Result<Vec<IdentityPublicKeyInCreationWithWitness>, JsValue>>()?;
106
+ .collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
107
107
  }
108
108
 
109
109
  self.0.set_public_keys_to_add(keys_to_add);
@@ -286,19 +286,11 @@ impl IdentityUpdateTransitionWasm {
286
286
  }
287
287
 
288
288
  #[wasm_bindgen(js_name=toBuffer)]
289
- pub fn to_buffer(&self, options: JsValue) -> Result<JsValue, JsValue> {
290
- let opts: super::to_object::ToObjectOptions = if options.is_object() {
291
- with_js_error!(serde_wasm_bindgen::from_value(options))?
292
- } else {
293
- Default::default()
294
- };
295
-
296
- let buffer = self
297
- .0
298
- .to_cbor_buffer(opts.skip_signature.unwrap_or(false))
299
- .map_err(from_dpp_err)?;
300
-
301
- Ok(Buffer::from_bytes(&buffer).into())
289
+ pub fn to_buffer(&self) -> Result<Buffer, JsValue> {
290
+ let bytes =
291
+ PlatformSerializable::serialize(&StateTransition::IdentityUpdate(self.0.clone()))
292
+ .with_js_error()?;
293
+ Ok(Buffer::from_bytes(&bytes))
302
294
  }
303
295
 
304
296
  #[wasm_bindgen(js_name=toJSON)]
@@ -2,7 +2,7 @@ use dpp::identity::KeyID;
2
2
  use dpp::state_transition::StateTransitionIdentitySigned;
3
3
  use dpp::{
4
4
  identifier::Identifier,
5
- identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness,
5
+ identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation,
6
6
  identity::state_transition::identity_update_transition::identity_update_transition::IdentityUpdateTransition,
7
7
  state_transition::StateTransitionLike,
8
8
  };
@@ -23,7 +23,7 @@ pub struct ToObject {
23
23
  pub signature: Option<Vec<u8>>,
24
24
  pub signature_public_key_id: Option<KeyID>,
25
25
  pub public_keys_disabled_at: Option<u64>,
26
- pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreationWithWitness>>,
26
+ pub public_keys_to_add: Option<Vec<IdentityPublicKeyInCreation>>,
27
27
  pub public_key_ids_to_disable: Option<Vec<KeyID>>,
28
28
  pub identity_id: Identifier,
29
29
  }
@@ -10,7 +10,7 @@ use dpp::identity::state_transition::validate_public_key_signatures::{
10
10
  PublicKeysSignaturesValidator, TPublicKeysSignaturesValidator,
11
11
  };
12
12
 
13
- use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreationWithWitness;
13
+ use dpp::identity::state_transition::identity_public_key_transitions::IdentityPublicKeyInCreation;
14
14
 
15
15
  use crate::errors::from_dpp_err;
16
16
  use dpp::platform_value::Value;
@@ -44,7 +44,7 @@ impl PublicKeysSignaturesValidatorWasm {
44
44
  let public_keys = raw_public_keys
45
45
  .into_iter()
46
46
  .map(|raw_key| {
47
- let parsed_key: IdentityPublicKeyInCreationWithWitness =
47
+ let parsed_key: IdentityPublicKeyInCreation =
48
48
  IdentityPublicKeyWithWitnessWasm::new(raw_key)?.into();
49
49
  parsed_key.to_raw_object(false).with_js_error()
50
50
  })
@@ -67,13 +67,9 @@ impl StateTransitionFacadeWasm {
67
67
  .try_into()
68
68
  .map_err(|_| JsValue::from_str("Invalid state transition type"))?;
69
69
 
70
- // TODO: clean values of other transitions as well?
71
- match state_transition_type {
72
- StateTransitionType::DataContractUpdate => {
73
- DataContractUpdateTransition::clean_value(&mut raw_state_transition)
74
- .map_err(PlatformValueErrorWasm::from)?;
75
- }
76
- _ => {}
70
+ if state_transition_type == StateTransitionType::DataContractUpdate {
71
+ DataContractUpdateTransition::clean_value(&mut raw_state_transition)
72
+ .map_err(PlatformValueErrorWasm::from)?;
77
73
  }
78
74
 
79
75
  let result = self
@@ -11,6 +11,7 @@ use dpp::state_transition::state_transition_execution_context::StateTransitionEx
11
11
  use dpp::state_transition::validation::validate_state_transition_identity_signature::validate_state_transition_identity_signature;
12
12
  use dpp::state_transition::{StateTransition, StateTransitionIdentitySigned};
13
13
 
14
+ use crate::StateTransitionExecutionContextWasm;
14
15
  use std::sync::Arc;
15
16
  use wasm_bindgen::prelude::wasm_bindgen;
16
17
  use wasm_bindgen::JsValue;
@@ -24,12 +25,13 @@ impl StValidator {
24
25
  pub async fn validate(
25
26
  &self,
26
27
  state_transition: &mut impl StateTransitionIdentitySigned,
28
+ execution_context: &StateTransitionExecutionContext,
27
29
  ) -> Result<ValidationResultWasm, JsValue> {
28
30
  let result = validate_state_transition_identity_signature(
29
31
  self.state_repository.clone(),
30
32
  state_transition,
31
33
  &self.bls,
32
- &StateTransitionExecutionContext::default(), // TODO(v0.24-backport): is it fine using default context here?
34
+ execution_context,
33
35
  )
34
36
  .await
35
37
  .with_js_error()?;
@@ -43,12 +45,14 @@ impl StValidator {
43
45
  pub async fn validate_state_transition_identity_signature_wasm(
44
46
  external_state_repository: ExternalStateRepositoryLike,
45
47
  js_state_transition: &JsValue,
48
+ execution_context: &StateTransitionExecutionContextWasm,
46
49
  bls_adapter: JsBlsAdapter,
47
50
  ) -> Result<ValidationResultWasm, JsValue> {
48
51
  let bls = BlsAdapter(bls_adapter);
49
52
  let state_repository = Arc::new(ExternalStateRepositoryLikeWrapper::new(
50
53
  external_state_repository,
51
54
  ));
55
+ let execution_context: StateTransitionExecutionContext = execution_context.to_owned().into();
52
56
 
53
57
  let validator = StValidator {
54
58
  bls,
@@ -60,13 +64,19 @@ pub async fn validate_state_transition_identity_signature_wasm(
60
64
 
61
65
  match state_transition {
62
66
  StateTransition::DataContractCreate(mut state_transition) => {
63
- validator.validate(&mut state_transition).await
67
+ validator
68
+ .validate(&mut state_transition, &execution_context)
69
+ .await
64
70
  }
65
71
  StateTransition::DataContractUpdate(mut state_transition) => {
66
- validator.validate(&mut state_transition).await
72
+ validator
73
+ .validate(&mut state_transition, &execution_context)
74
+ .await
67
75
  }
68
76
  StateTransition::DocumentsBatch(mut state_transition) => {
69
- validator.validate(&mut state_transition).await
77
+ validator
78
+ .validate(&mut state_transition, &execution_context)
79
+ .await
70
80
  }
71
81
  // TODO: We should use protocol error here, not consensus
72
82
  StateTransition::IdentityCreate(state_transition) => Err(from_consensus_error(
@@ -81,10 +91,14 @@ pub async fn validate_state_transition_identity_signature_wasm(
81
91
  )),
82
92
  )),
83
93
  StateTransition::IdentityCreditWithdrawal(mut state_transition) => {
84
- validator.validate(&mut state_transition).await
94
+ validator
95
+ .validate(&mut state_transition, &execution_context)
96
+ .await
85
97
  }
86
98
  StateTransition::IdentityUpdate(mut state_transition) => {
87
- validator.validate(&mut state_transition).await
99
+ validator
100
+ .validate(&mut state_transition, &execution_context)
101
+ .await
88
102
  }
89
103
  }
90
104
  }