pshenmic-dpp 1.0.4 → 1.0.6

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 (152) hide show
  1. package/.github/workflows/build.yml +9 -1
  2. package/.github/workflows/publish.yml +9 -1
  3. package/Cargo.lock +222 -76
  4. package/Cargo.toml +28 -19
  5. package/README.md +75 -23
  6. package/babel.config.json +19 -0
  7. package/dist/wasm/index.d.ts +52 -0
  8. package/dist/wasm/pshenmic_dpp.d.ts +962 -0
  9. package/dist/wasm/pshenmic_dpp.js +5565 -966
  10. package/dist/wasm/pshenmic_dpp_bg.js +1 -1
  11. package/dist/wasm/pshenmic_dpp_bg.wasm.d.ts +440 -0
  12. package/docs/AssetLockProof.md +107 -0
  13. package/docs/Building.md +50 -0
  14. package/docs/ChainLockProof.md +63 -0
  15. package/docs/CoreScript.md +17 -0
  16. package/docs/DataContract.md +192 -0
  17. package/docs/DataContractCreateTransition.md +84 -0
  18. package/docs/DataContractUpdateTransition.md +84 -0
  19. package/docs/Document.md +396 -0
  20. package/docs/DocumentBaseTransition.md +111 -0
  21. package/docs/DocumentCreateTransition.md +132 -0
  22. package/docs/DocumentDeleteTransition.md +82 -0
  23. package/docs/DocumentPurchaseTransition.md +109 -0
  24. package/docs/DocumentReplaceTransition.md +112 -0
  25. package/docs/DocumentTransferTransition.md +96 -0
  26. package/docs/DocumentTransition.md +125 -0
  27. package/docs/DocumentUpdatePriceTransition.md +109 -0
  28. package/docs/DocumentsBatch.md +133 -0
  29. package/docs/Enums.md +103 -0
  30. package/docs/Home.md +28 -0
  31. package/docs/Identifier.md +37 -0
  32. package/docs/Identity.md +140 -0
  33. package/docs/IdentityCreateTransition.md +155 -0
  34. package/docs/IdentityCreditTransfer.md +187 -0
  35. package/docs/IdentityCreditWithdrawalTransition.md +244 -0
  36. package/docs/IdentityPublicKey.md +348 -0
  37. package/docs/IdentityPublicKeyInCreation.md +141 -0
  38. package/docs/IdentityTopUpTransition.md +166 -0
  39. package/docs/IdentityUpdateTransition.md +234 -0
  40. package/docs/InstantAssetLockProof.md +117 -0
  41. package/docs/InstantLock.md +100 -0
  42. package/docs/OutPoint.md +80 -0
  43. package/docs/PrefundedVotingBalance.md +48 -0
  44. package/docs/PrivateKey.md +112 -0
  45. package/docs/TxOut.md +93 -0
  46. package/package.json +15 -8
  47. package/packages/asset_lock_proof/Cargo.toml +19 -0
  48. package/packages/asset_lock_proof/src/chain/mod.rs +79 -0
  49. package/packages/asset_lock_proof/src/instant/instant_lock.rs +111 -0
  50. package/packages/asset_lock_proof/src/instant/mod.rs +115 -0
  51. package/packages/asset_lock_proof/src/lib.rs +133 -0
  52. package/packages/asset_lock_proof/src/outpoint/mod.rs +79 -0
  53. package/packages/asset_lock_proof/src/tx_out/mod.rs +80 -0
  54. package/packages/cbor_conversation/Cargo.toml +2 -2
  55. package/packages/core_script/Cargo.toml +13 -0
  56. package/packages/core_script/src/lib.rs +69 -0
  57. package/packages/data_contract/Cargo.toml +4 -3
  58. package/packages/data_contract/src/lib.rs +209 -33
  59. package/packages/data_contract_transitions/Cargo.toml +2 -2
  60. package/packages/data_contract_transitions/src/create/mod.rs +23 -16
  61. package/packages/data_contract_transitions/src/update/mod.rs +21 -12
  62. package/packages/document/Cargo.toml +3 -2
  63. package/packages/document/src/lib.rs +14 -13
  64. package/packages/document/src/methods/mod.rs +373 -2
  65. package/packages/{document_batch → documents_batch}/Cargo.toml +7 -4
  66. package/packages/documents_batch/src/document_base_transition/mod.rs +88 -0
  67. package/packages/documents_batch/src/document_transition/mod.rs +166 -0
  68. package/packages/documents_batch/src/generators.rs +122 -0
  69. package/packages/documents_batch/src/lib.rs +195 -0
  70. package/packages/documents_batch/src/prefunded_voting_balance/mod.rs +45 -0
  71. package/packages/documents_batch/src/transitions/create/mod.rs +126 -0
  72. package/packages/documents_batch/src/transitions/delete/mod.rs +67 -0
  73. package/packages/documents_batch/src/transitions/mod.rs +6 -0
  74. package/packages/documents_batch/src/transitions/purchase/mod.rs +91 -0
  75. package/packages/documents_batch/src/transitions/replace/mod.rs +93 -0
  76. package/packages/documents_batch/src/transitions/transfer/mod.rs +84 -0
  77. package/packages/documents_batch/src/transitions/update_price/mod.rs +75 -0
  78. package/packages/enums/Cargo.toml +4 -4
  79. package/packages/enums/src/batch/batch_enum.rs +75 -10
  80. package/packages/enums/src/keys/key_type.rs +46 -0
  81. package/packages/enums/src/keys/purpose.rs +55 -0
  82. package/packages/enums/src/keys/security_level.rs +46 -0
  83. package/packages/enums/src/lib.rs +3 -0
  84. package/packages/enums/src/lock_types/mod.rs +65 -0
  85. package/packages/enums/src/network/mod.rs +67 -0
  86. package/packages/enums/src/platform/mod.rs +68 -8
  87. package/packages/enums/src/withdrawal/mod.rs +72 -0
  88. package/packages/identifier/Cargo.toml +9 -0
  89. package/packages/identifier/src/lib.rs +105 -0
  90. package/packages/identity/Cargo.toml +5 -5
  91. package/packages/identity/src/lib.rs +31 -25
  92. package/packages/{public_key → identity_public_key}/Cargo.toml +2 -2
  93. package/packages/{public_key → identity_public_key}/src/lib.rs +74 -27
  94. package/packages/identity_transitions/Cargo.toml +8 -4
  95. package/packages/identity_transitions/src/create_transition/mod.rs +102 -37
  96. package/packages/identity_transitions/src/credit_withdrawal_transition/mod.rs +212 -0
  97. package/packages/identity_transitions/src/identity_credit_transfer_transition/mod.rs +169 -0
  98. package/packages/identity_transitions/src/lib.rs +6 -1
  99. package/packages/identity_transitions/src/public_key_in_creation/mod.rs +197 -0
  100. package/packages/identity_transitions/src/top_up_transition/mod.rs +141 -0
  101. package/packages/identity_transitions/src/update_transition/mod.rs +213 -0
  102. package/packages/mock_bls/Cargo.toml +1 -1
  103. package/packages/private_key/Cargo.toml +4 -3
  104. package/packages/private_key/src/lib.rs +44 -6
  105. package/packages/state_transition/Cargo.toml +6 -4
  106. package/packages/state_transition/src/lib.rs +102 -36
  107. package/packages/utils/Cargo.toml +3 -4
  108. package/packages/utils/src/lib.rs +17 -18
  109. package/scripts/build-js.sh +22 -5
  110. package/scripts/build.sh +27 -2
  111. package/src/lib.rs +8 -1
  112. package/tests/AssetLockProof.spec.js +80 -0
  113. package/tests/ChainLockProof.spec.js +69 -0
  114. package/tests/CoreScript.spec.js +37 -0
  115. package/tests/DataContract.spec.js +178 -0
  116. package/tests/DataContractCreateStateTransition.spec.js +109 -0
  117. package/tests/DataContractUpdateStateTransition.spec.js +109 -0
  118. package/tests/Document.spec.js +238 -0
  119. package/tests/DocumentBatchTransition.spec.js +109 -0
  120. package/tests/DocumentTransition.spec.js +97 -0
  121. package/tests/DocumentsTransitions.spec.js +705 -0
  122. package/tests/Identifier.spec.js +84 -0
  123. package/tests/Identity.spec.js +113 -0
  124. package/tests/IdentityCreateTransition.spec.js +93 -0
  125. package/tests/IdentityCreditTransferTransition.spec.js +146 -0
  126. package/tests/IdentityCreditWithdrawalTransition.spec.js +192 -0
  127. package/tests/IdentityPublicKey.spec.js +132 -0
  128. package/tests/IdentityTopUpTransition.spec.js +131 -0
  129. package/tests/IdentityUpdateTransition.spec.js +147 -0
  130. package/tests/InstantLockProof.spec.js +97 -0
  131. package/tests/OutPoint.spec.js +55 -0
  132. package/tests/PrivateKey.spec.js +73 -0
  133. package/tests/PublicKeyInCreation.spec.js +258 -0
  134. package/tests/TxOut.spec.js +76 -0
  135. package/tests/mocks/DataContract/DataContract.json +153 -0
  136. package/tests/mocks/DataContract/index.js +6 -0
  137. package/tests/mocks/Document/DataContract.json +23 -0
  138. package/tests/mocks/Document/document.json +3 -0
  139. package/tests/mocks/Document/document2.json +3 -0
  140. package/tests/mocks/Document/index.js +11 -0
  141. package/tests/mocks/Identity/index.js +7 -0
  142. package/tests/mocks/Locks/index.js +5 -0
  143. package/tests/mocks/PrivateKey/index.js +5 -0
  144. package/tests/mocks/PublicKey/index.js +14 -0
  145. package/tests/utils/hex.js +15 -0
  146. package/tests/utils/wasm.js +14 -0
  147. package/typings/index.d.ts +52 -0
  148. package/packages/document/src/methods/js.rs +0 -260
  149. package/packages/document/src/methods/rust.rs +0 -92
  150. package/packages/document_batch/src/generators.rs +0 -63
  151. package/packages/document_batch/src/lib.rs +0 -228
  152. package/packages/identity_transitions/src/create_transition/public_key_in_creation/mod.rs +0 -146
package/Cargo.toml CHANGED
@@ -1,43 +1,52 @@
1
+ [package]
2
+ name = "pshenmic-dpp"
3
+ version = "1.0.6"
4
+ edition = "2024"
5
+ rust-version = "1.85"
6
+
7
+ [workspace.package]
8
+ version = "1.0.5"
9
+
1
10
  [workspace]
2
11
  resolver = "2"
3
12
  members = [
4
13
  "packages/document",
5
- "packages/document_batch",
14
+ "packages/documents_batch",
6
15
  "packages/cbor_conversation",
7
16
  "packages/enums",
8
17
  "packages/mock_bls",
9
18
  "packages/private_key",
10
- "packages/public_key",
19
+ "packages/identity_public_key",
11
20
  "packages/utils",
12
21
  "packages/identity",
13
22
  "packages/identity_transitions",
14
23
  "packages/state_transition",
15
- "packages/data_contract"
16
- , "packages/data_contract_transitions"]
24
+ "packages/data_contract",
25
+ "packages/asset_lock_proof",
26
+ "packages/data_contract_transitions", "packages/core_script"]
17
27
 
18
28
  [lib]
19
29
  crate-type = ["cdylib", "lib"]
20
30
 
21
- [package]
22
- name = "pshenmic-dpp"
23
- version = "1.0.4"
24
- edition = "2024"
25
- rust-version = "1.85"
26
-
27
31
  [dependencies]
28
- bincode = { version = "=2.0.0-rc.3" }
29
- bincode_derive = { version = "=2.0.0-rc.3" }
30
- pshenmic_dpp_document_batch = { path = "packages/document_batch" }
32
+ wee_alloc = { version = "0.4.5", default-features = false }
33
+ bincode = "=2.0.0-rc.3"
34
+ bincode_derive = "=2.0.0-rc.3"
35
+ pshenmic_dpp_documents_batch = { path = "packages/documents_batch" }
31
36
  pshenmic_dpp_document_search = { path = "packages/cbor_conversation" }
32
37
  pshenmic_dpp_identity = { path = "packages/identity" }
38
+ pshenmic_dpp_identifier = { path = "packages/identifier" }
33
39
  pshenmic_dpp_state_transition = { path = "packages/state_transition" }
34
40
  pshenmic_dpp_identity_transitions = { path = "packages/identity_transitions" }
35
- pshenmic_dpp_data_contract = {path = "packages/data_contract"}
36
- pshenmic_dpp_data_contract_transitions = {path = "packages/data_contract_transitions"}
37
- pshenmic_dpp_enums = {path = "packages/enums"}
41
+ pshenmic_dpp_data_contract = { path = "packages/data_contract" }
42
+ pshenmic_dpp_data_contract_transitions = { path = "packages/data_contract_transitions" }
43
+ pshenmic_dpp_enums = { path = "packages/enums" }
38
44
 
39
45
  [profile.release]
40
- lto = true
41
- opt-level = 'z'
42
- strip = true
46
+ lto = "fat"
47
+ opt-level = "z"
48
+ strip = "symbols"
43
49
  codegen-units = 1
50
+ panic = "abort"
51
+ incremental = false
52
+ debug = false
package/README.md CHANGED
@@ -1,26 +1,81 @@
1
1
  # PSHENMIC-DPP
2
+ ### **AT THIS MOMENT MODULE UNDER DEVELOPMENT**
2
3
 
3
-
4
+ ## General
5
+ Pshenmic-dpp is package with rust bindings for JS
4
6
 
5
7
  That module uses [rs-dpp](https://github.com/dashpay/platform) and creates bindings for JavaScript.
6
- Each structure from rs-dpp is represented by a separate package, so you can build not the whole module, but only a part of it
8
+ Each structure from rs-dpp is represented by a separate package, so you can build not the whole module, but only a part of it.
9
+
10
+ One of the advantages of this module is that you can build `.wasm` file not with all modules, but only with the ones you are interested in + minimal dependencies for them
11
+ ___
12
+ ## How To Install
13
+ `yarn add pshenmic-dpp`
14
+ ___
15
+ ## Manual Building
16
+ ### Install dependencies
17
+ `yarn`
18
+
19
+ ### Build JS
20
+ `yarn build:full`
21
+
22
+ **NOTE. If you want to use ES6 module without CJS, you need to run `yarn babel`**
23
+
24
+ ### Build with binary instead base64
25
+ `yarn build:raw`
26
+ Now you can import `.js` with base64 buffer for WebAssembly module, or binary which smaller
27
+ ___
28
+ ## Why you need to use `pshenmic-dpp` instead `wasm-dpp`
29
+
30
+ - `pshenmic-dpp` weighs much less, currently taking up only 2.8 mb in base64 format
31
+ - You can build only necessary modules by removing imports from `lib.rs` before building
32
+ - More accurately replicates `rs-dpp`
33
+ - Some sugar, like enums, which you can pass in string with any case or just use numbers
34
+ ___
35
+
36
+ ## Current features
7
37
 
8
38
  **At this moment available structs:**
9
39
  - `Document`
10
40
  - `DocumentsBatch`
41
+ - `DocumentsBaseTransition`
42
+ - `DocumentsTransition`
43
+ - `PrefundedVotingBalance`
44
+ - DocumentsTransitions:
45
+ - `DocuemntCreateTransition`
46
+ - `DocuemntDeleteTransition`
47
+ - `DocuemntPurchaseTransition`
48
+ - `DocuemntReplaceTransition`
49
+ - `DocumentTransferTransition`
50
+ - `DocumentUpdatePriceTransition`
11
51
  - `IdentityPublicKey`
52
+ - IdentityTransitions:
53
+ - `IdentityCreateTransition`
54
+ - `IdentityCreditWithdrawalTransition`
55
+ - `IdentityCreditTransferTransition`
56
+ - `IdentityTopUpTransition`
57
+ - `IdentityUpdateTransition`
58
+ - `IdentityPublicKeyInCreationWASM`
59
+ - `AssetLockProof`
60
+ - `OutPoint`
61
+ - `TxOut`
62
+ - `CoreScript`
12
63
  - `PrivateKey`
13
64
  - `Identity`
14
65
  - `StateTransition`
15
- - `IdentityTransitions`
16
66
  - `DataContract`
17
67
  - `Enums`
18
68
 
19
- ## How to build
20
- Default scripts allows to build full module
69
+ **At this moment available static methods**
70
+ - `objectToCbor`
71
+ - `cborToObject`
72
+ - `generateId` for data contract class
73
+ - `generateId` for document class
74
+ -
75
+
76
+ ## How to run unit tests
21
77
  ```
22
- yarn
23
- yarn build:full
78
+ yarn tests
24
79
  ```
25
80
 
26
81
  ## Example
@@ -29,12 +84,6 @@ yarn build:full
29
84
  import * as wasm from '../wasm/pshenmic_dpp';
30
85
  import wasmBytes from "../wasm/pshenmic_dpp_bg"
31
86
 
32
- function toHexString(byteArray) {
33
- return Array.prototype.map.call(byteArray, function(byte) {
34
- return ('0' + (byte & 0xFF).toString(16)).slice(-2);
35
- }).join('');
36
- }
37
-
38
87
  let binaryString = atob(wasmBytes);
39
88
  let bytes = new Uint8Array(binaryString.length);
40
89
  for (let i = 0; i < binaryString.length; i++) {
@@ -43,7 +92,7 @@ for (let i = 0; i < binaryString.length; i++) {
43
92
 
44
93
  wasm.initSync({module: bytes.buffer})
45
94
 
46
- const document = wasm.DocumentWASM.new(
95
+ const document = new wasm.DocumentWASM(
47
96
  {
48
97
  "name": "MyPool",
49
98
  "type": "EVONODE",
@@ -56,7 +105,7 @@ const document = wasm.DocumentWASM.new(
56
105
  "B7kcE1juMBWEWkuYRJhVdAE2e6RaevrGxRsa1DrLCpQH"
57
106
  )
58
107
 
59
- const pubKey = wasm.IdentityPublicKeyWASM.new(
108
+ const pubKey = new wasm.IdentityPublicKeyWASM(
60
109
  1,
61
110
  wasm.Purpose.AUTHENTICATION,
62
111
  wasm.SecurityLevel.HIGH,
@@ -65,15 +114,18 @@ const pubKey = wasm.IdentityPublicKeyWASM.new(
65
114
  'your_binary_data_in_hex'
66
115
  )
67
116
 
68
- const privKey = wasm.PrivateKeyWASM.new('wif_key')
117
+ const privKey = new wasm.PrivateKeyWASM('your_wif_key')
69
118
 
70
- const batch = wasm.DocumentBatchWASM.new(
71
- wasm.BatchType.CREATE,
72
- document,
73
- BigInt(3),
74
- )
119
+ const createTransition = new wasm.DocumentCreateTransitionWASM(document, BigInt(1), 'preorder')
120
+
121
+ const documentTransition = createTransition.toDocumentTransition()
122
+
123
+ const batchTransition = new wasm.DocumentsBatchWASM([documentTransition, documentTransition], Array.from(documentInstance.getOwnerId()), 1)
124
+
125
+ const st = batchTransition.toStateTransition()
75
126
 
76
- batch.sign(privKey, pubKey)
127
+ st.sign(privKey, pubKey)
77
128
 
78
- console.log(toHexString(batch.toBuffer()))
129
+ console.log(st.toBytes())
130
+ console.log(st.hash(false))
79
131
  ```
@@ -0,0 +1,19 @@
1
+ {
2
+ "presets": [
3
+ [
4
+ "@babel/preset-env",
5
+ {
6
+ "targets": {
7
+ "edge": "17",
8
+ "firefox": "60",
9
+ "chrome": "67",
10
+ "safari": "11.1",
11
+ "node": "18"
12
+ },
13
+ "useBuiltIns": "usage",
14
+ "corejs": "3.6.5"
15
+ }
16
+ ]
17
+ ],
18
+ "plugins": ["@babel/plugin-transform-modules-commonjs"]
19
+ }
@@ -0,0 +1,52 @@
1
+ import * as DPP from './pshenmic_dpp';
2
+
3
+ export * from './pshenmic_dpp';
4
+
5
+ export class DashPlatformProtocolWASM {
6
+ // CLASSES
7
+ AssetLockProofWASM: typeof DPP.AssetLockProofWASM
8
+ ChainAssetLockProofWASM: typeof DPP.ChainAssetLockProofWASM
9
+ CoreScriptWASM: typeof DPP.CoreScriptWASM
10
+ DataContractCreateTransitionWASM: typeof DPP.DataContractCreateTransitionWASM
11
+ DataContractUpdateTransitionWASM: typeof DPP.DataContractUpdateTransitionWASM
12
+ DataContractWASM: typeof DPP.DataContractWASM
13
+ DocumentBaseTransitionWASM: typeof DPP.DocumentBaseTransitionWASM
14
+ DocumentCreateTransitionWASM: typeof DPP.DocumentCreateTransitionWASM
15
+ DocumentDeleteTransitionWASM: typeof DPP.DocumentDeleteTransitionWASM
16
+ DocumentPurchaseTransitionWASM: typeof DPP.DocumentPurchaseTransitionWASM
17
+ DocumentReplaceTransitionWASM: typeof DPP.DocumentReplaceTransitionWASM
18
+ DocumentTransferTransitionWASM: typeof DPP.DocumentTransferTransitionWASM
19
+ DocumentTransitionWASM: typeof DPP.DocumentTransitionWASM
20
+ DocumentUpdatePriceTransitionWASM: typeof DPP.DocumentUpdatePriceTransitionWASM
21
+ DocumentWASM: typeof DPP.DocumentWASM
22
+ DocumentsBatchWASM: typeof DPP.DocumentsBatchWASM
23
+ IdentifierWASM: typeof DPP.IdentifierWASM
24
+ IdentityCreateTransitionWASM: typeof DPP.IdentityCreateTransitionWASM
25
+ IdentityCreditTransferWASM: typeof DPP.IdentityCreditTransferWASM
26
+ IdentityCreditWithdrawalTransitionWASM: typeof DPP.IdentityCreditWithdrawalTransitionWASM
27
+ IdentityPublicKeyInCreationWASM: typeof DPP.IdentityPublicKeyInCreationWASM
28
+ IdentityPublicKeyWASM: typeof DPP.IdentityPublicKeyWASM
29
+ IdentityTopUpTransitionWASM: typeof DPP.IdentityTopUpTransitionWASM
30
+ IdentityUpdateTransitionWASM: typeof DPP.IdentityUpdateTransitionWASM
31
+ IdentityWASM: typeof DPP.IdentityWASM
32
+ InstantAssetLockProofWASM: typeof DPP.InstantAssetLockProofWASM
33
+ InstantLockWASM: typeof DPP.InstantLockWASM
34
+ OutPointWASM: typeof DPP.OutPointWASM
35
+ PrefundedVotingBalanceWASM: typeof DPP.PrefundedVotingBalanceWASM
36
+ PrivateKeyWASM: typeof DPP.PrivateKeyWASM
37
+ StateTransitionWASM: typeof DPP.StateTransitionWASM
38
+ TxOutWASM: typeof DPP.TxOutWASM
39
+ // ENUMS
40
+ AssetLockProofTypeWASM: typeof DPP.AssetLockProofTypeWASM
41
+ BatchType: typeof DPP.BatchType
42
+ KeyType: typeof DPP.KeyType
43
+ NetworkWASM: typeof DPP.NetworkWASM
44
+ PlatformVersionWASM: typeof DPP.PlatformVersionWASM
45
+ PoolingWASM: typeof DPP.PoolingWASM
46
+ Purpose: typeof DPP.Purpose
47
+ SecurityLevel: typeof DPP.SecurityLevel
48
+ // METHODS
49
+ cborToObject: typeof DPP.cborToObject
50
+ objectToCbor: typeof DPP.objectToCbor
51
+ initSync: typeof DPP.initSync
52
+ }