@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.
- package/dist/wasm/wasm_dpp.d.ts +431 -436
- package/dist/wasm/wasm_dpp.js +39 -44
- package/dist/wasm/wasm_dpp_bg.js +1 -1
- package/lib/test/fixtures/getDocumentsFixture.js +5 -1
- package/lib/wasm/wasm_dpp.d.ts +431 -436
- package/package.json +3 -3
- package/src/dash_platform_protocol.rs +1 -1
- package/src/data_contract/data_contract.rs +2 -1
- package/src/data_contract/state_transition/data_contract_create_transition/mod.rs +6 -5
- package/src/data_contract/state_transition/data_contract_update_transition/mod.rs +6 -5
- package/src/document/extended_document.rs +2 -2
- package/src/document/state_transition/document_batch_transition/mod.rs +6 -9
- package/src/errors/consensus/basic/invalid_signature_public_key_security_level_error.rs +6 -6
- package/src/identity/factory_utils.rs +4 -4
- package/src/identity/mod.rs +4 -2
- package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs +11 -19
- package/src/identity/state_transition/identity_create_transition/to_object.rs +2 -2
- package/src/identity/state_transition/identity_public_key_transitions.rs +10 -10
- package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs +7 -15
- package/src/identity/state_transition/identity_update_transition/identity_update_public_keys_validator.rs +2 -2
- package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs +10 -18
- package/src/identity/state_transition/identity_update_transition/to_object.rs +2 -2
- package/src/identity/state_transition/validate_public_key_signatures.rs +2 -2
- package/src/state_transition/state_transition_facade.rs +3 -7
- package/src/state_transition/validation/validate_state_transition_identity_signature.rs +20 -6
- package/test/integration/dataContract/DataContractFacade.spec.js +17 -20
- package/test/integration/dataContract/stateTransition/DataContractUpdateTransition/validation/basic/validateDataContractUpdateTransitionBasicFactory.spec.js +5 -4
- package/test/integration/stateTransition/StateTransitionFacade.spec.js +1 -1
- package/test/unit/dataContract/DataContract.spec.js +9 -21
- package/test/unit/dataContract/DataContractFactory.spec.js +19 -28
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/DataContractCreateTransition.spec.js +2 -4
- package/test/unit/dataContract/stateTransition/DataContractCreateTransition/validation/state/validateDataContractCreateTransitionStateFactory.spec.js +6 -5
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/DataContractUpdateTransition.spec.js +3 -5
- package/test/unit/dataContract/stateTransition/DataContractUpdateTransition/validation/state/validateDataContractUpdateTransitionStateFactory.spec.js +5 -4
- package/test/unit/decodeProtocolEntityFactory.spec.js +4 -1
- package/test/unit/document/Document.spec.js +9 -7
- package/test/unit/document/DocumentFactory.spec.js +38 -90
- package/test/unit/document/stateTransition/DocumetsBatchTransition/DocumentsBatchTransition.spec.js +2 -3
- package/test/unit/identity/Identity.spec.js +3 -8
- package/test/unit/identity/IdentityFactory.spec.js +3 -4
- package/test/unit/stateTransition/validation/validateStateTransitionBasicFactory.spec.js +2 -2
- package/test/unit/stateTransition/validation/validateStateTransitionFeeFactory.spec.js +4 -16
- 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.
|
|
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.
|
|
48
|
-
"@dashevo/dpp": "0.25.0-dev.
|
|
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
|
|
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
|
|
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
|
|
111
|
-
let bytes =
|
|
112
|
-
.0
|
|
113
|
-
|
|
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
|
|
113
|
-
let bytes =
|
|
114
|
-
.0
|
|
115
|
-
|
|
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.
|
|
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
|
|
373
|
-
let
|
|
374
|
-
|
|
375
|
-
|
|
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) ->
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
.
|
|
32
|
-
|
|
33
|
-
|
|
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::
|
|
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<
|
|
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<
|
|
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<
|
|
58
|
+
.collect::<Result<Vec<IdentityPublicKeyInCreation>, JsValue>>()?;
|
|
59
59
|
|
|
60
60
|
add_public_keys = Some(keys)
|
|
61
61
|
}
|
package/src/identity/mod.rs
CHANGED
|
@@ -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) ->
|
|
216
|
-
self.0.
|
|
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]
|
package/src/identity/state_transition/identity_create_transition/identity_create_transition.rs
CHANGED
|
@@ -18,17 +18,17 @@ use crate::{
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
use crate::bls_adapter::{BlsAdapter, JsBlsAdapter};
|
|
21
|
-
use
|
|
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::
|
|
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<
|
|
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<
|
|
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(
|
|
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
|
|
232
|
-
let
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
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::
|
|
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<
|
|
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::
|
|
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(
|
|
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 =
|
|
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) ->
|
|
177
|
+
pub fn into_inner(self) -> IdentityPublicKeyInCreation {
|
|
178
178
|
self.0
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
pub fn inner(&self) -> &
|
|
181
|
+
pub fn inner(&self) -> &IdentityPublicKeyInCreation {
|
|
182
182
|
&self.0
|
|
183
183
|
}
|
|
184
184
|
|
|
185
|
-
pub fn inner_mut(&mut self) -> &mut
|
|
185
|
+
pub fn inner_mut(&mut self) -> &mut IdentityPublicKeyInCreation {
|
|
186
186
|
&mut self.0
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
impl From<
|
|
191
|
-
fn from(v:
|
|
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
|
-
|
|
203
|
+
IdentityPublicKeyInCreation::from_raw_json_object(val).with_js_error()?,
|
|
204
204
|
))
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
impl From<IdentityPublicKeyWithWitnessWasm> for
|
|
208
|
+
impl From<IdentityPublicKeyWithWitnessWasm> for IdentityPublicKeyInCreation {
|
|
209
209
|
fn from(pk: IdentityPublicKeyWithWitnessWasm) -> Self {
|
|
210
210
|
pk.0
|
|
211
211
|
}
|
package/src/identity/state_transition/identity_topup_transition/identity_topup_transition.rs
CHANGED
|
@@ -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::
|
|
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
|
|
173
|
-
let
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
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::
|
|
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:
|
|
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()
|
package/src/identity/state_transition/identity_update_transition/identity_update_transition.rs
CHANGED
|
@@ -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::
|
|
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::
|
|
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<
|
|
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<
|
|
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
|
|
290
|
-
let
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
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::
|
|
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<
|
|
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::
|
|
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:
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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
|
|
67
|
+
validator
|
|
68
|
+
.validate(&mut state_transition, &execution_context)
|
|
69
|
+
.await
|
|
64
70
|
}
|
|
65
71
|
StateTransition::DataContractUpdate(mut state_transition) => {
|
|
66
|
-
validator
|
|
72
|
+
validator
|
|
73
|
+
.validate(&mut state_transition, &execution_context)
|
|
74
|
+
.await
|
|
67
75
|
}
|
|
68
76
|
StateTransition::DocumentsBatch(mut state_transition) => {
|
|
69
|
-
validator
|
|
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
|
|
94
|
+
validator
|
|
95
|
+
.validate(&mut state_transition, &execution_context)
|
|
96
|
+
.await
|
|
85
97
|
}
|
|
86
98
|
StateTransition::IdentityUpdate(mut state_transition) => {
|
|
87
|
-
validator
|
|
99
|
+
validator
|
|
100
|
+
.validate(&mut state_transition, &execution_context)
|
|
101
|
+
.await
|
|
88
102
|
}
|
|
89
103
|
}
|
|
90
104
|
}
|