phantasma-sdk-ts 0.1.71
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/.eslintignore +13 -0
- package/.eslintrc.cjs +15 -0
- package/.github/workflows/npm-publish.yml +47 -0
- package/.prettierignore +13 -0
- package/.prettierrc +8 -0
- package/LICENSE +201 -0
- package/README.md +842 -0
- package/babel.config.js +6 -0
- package/core/index.d.ts +10 -0
- package/core/index.d.ts.map +1 -0
- package/core/index.js +25 -0
- package/core/interfaces/IContract.d.ts +27 -0
- package/core/interfaces/IContract.d.ts.map +1 -0
- package/core/interfaces/IContract.js +25 -0
- package/core/interfaces/IKeyPair.d.ts +7 -0
- package/core/interfaces/IKeyPair.d.ts.map +1 -0
- package/core/interfaces/IKeyPair.js +2 -0
- package/core/interfaces/ISerializable.d.ts +6 -0
- package/core/interfaces/ISerializable.d.ts.map +1 -0
- package/core/interfaces/ISerializable.js +9 -0
- package/core/interfaces/IStack.d.ts +7 -0
- package/core/interfaces/IStack.d.ts.map +1 -0
- package/core/interfaces/IStack.js +2 -0
- package/core/interfaces/IToken.d.ts +29 -0
- package/core/interfaces/IToken.d.ts.map +1 -0
- package/core/interfaces/IToken.js +22 -0
- package/core/interfaces/Signature.d.ts +21 -0
- package/core/interfaces/Signature.d.ts.map +1 -0
- package/core/interfaces/Signature.js +31 -0
- package/core/interfaces/index.d.ts +7 -0
- package/core/interfaces/index.d.ts.map +1 -0
- package/core/interfaces/index.js +22 -0
- package/core/ledger/Address-Transcode.d.ts +20 -0
- package/core/ledger/Address-Transcode.d.ts.map +1 -0
- package/core/ledger/Address-Transcode.js +70 -0
- package/core/ledger/Ledger-Commands.d.ts +76 -0
- package/core/ledger/Ledger-Commands.d.ts.map +1 -0
- package/core/ledger/Ledger-Commands.js +530 -0
- package/core/ledger/Ledger-Utils.d.ts +74 -0
- package/core/ledger/Ledger-Utils.d.ts.map +1 -0
- package/core/ledger/Ledger-Utils.js +609 -0
- package/core/ledger/LedgerConfig.d.ts +17 -0
- package/core/ledger/LedgerConfig.d.ts.map +1 -0
- package/core/ledger/LedgerConfig.js +2 -0
- package/core/ledger/Mnemonic.d.ts +35 -0
- package/core/ledger/Mnemonic.d.ts.map +1 -0
- package/core/ledger/Mnemonic.js +65 -0
- package/core/ledger/Transaction-Sign.d.ts +10 -0
- package/core/ledger/Transaction-Sign.d.ts.map +1 -0
- package/core/ledger/Transaction-Sign.js +149 -0
- package/core/ledger/Transaction-Transcode.d.ts +24 -0
- package/core/ledger/Transaction-Transcode.d.ts.map +1 -0
- package/core/ledger/Transaction-Transcode.js +47 -0
- package/core/ledger/index.d.ts +9 -0
- package/core/ledger/index.d.ts.map +1 -0
- package/core/ledger/index.js +24 -0
- package/core/ledger/interfaces/ApplicationNameResponse.d.ts +6 -0
- package/core/ledger/interfaces/ApplicationNameResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/ApplicationNameResponse.js +2 -0
- package/core/ledger/interfaces/Device.d.ts +7 -0
- package/core/ledger/interfaces/Device.d.ts.map +1 -0
- package/core/ledger/interfaces/Device.js +2 -0
- package/core/ledger/interfaces/DeviceResponse.d.ts +7 -0
- package/core/ledger/interfaces/DeviceResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/DeviceResponse.js +2 -0
- package/core/ledger/interfaces/Ledger.d.ts +2 -0
- package/core/ledger/interfaces/Ledger.d.ts.map +1 -0
- package/core/ledger/interfaces/Ledger.js +2 -0
- package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.d.ts +12 -0
- package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.js +2 -0
- package/core/ledger/interfaces/LedgerConfig.d.ts +17 -0
- package/core/ledger/interfaces/LedgerConfig.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerConfig.js +2 -0
- package/core/ledger/interfaces/LedgerDeviceInfoResponse.d.ts +7 -0
- package/core/ledger/interfaces/LedgerDeviceInfoResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerDeviceInfoResponse.js +2 -0
- package/core/ledger/interfaces/LedgerSendTransactionResponse.d.ts +5 -0
- package/core/ledger/interfaces/LedgerSendTransactionResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerSendTransactionResponse.js +2 -0
- package/core/ledger/interfaces/LedgerSigner.d.ts +6 -0
- package/core/ledger/interfaces/LedgerSigner.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerSigner.js +2 -0
- package/core/ledger/interfaces/LedgerSignerData.d.ts +8 -0
- package/core/ledger/interfaces/LedgerSignerData.d.ts.map +1 -0
- package/core/ledger/interfaces/LedgerSignerData.js +2 -0
- package/core/ledger/interfaces/PublicKeyResponse.d.ts +6 -0
- package/core/ledger/interfaces/PublicKeyResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/PublicKeyResponse.js +2 -0
- package/core/ledger/interfaces/SignResponse.d.ts +6 -0
- package/core/ledger/interfaces/SignResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/SignResponse.js +2 -0
- package/core/ledger/interfaces/VersionResponse.d.ts +6 -0
- package/core/ledger/interfaces/VersionResponse.d.ts.map +1 -0
- package/core/ledger/interfaces/VersionResponse.js +2 -0
- package/core/ledger/interfaces/index.d.ts +14 -0
- package/core/ledger/interfaces/index.d.ts.map +1 -0
- package/core/ledger/interfaces/index.js +29 -0
- package/core/ledger/ledger-comm.d.ts +85 -0
- package/core/ledger/ledger-comm.d.ts.map +1 -0
- package/core/ledger/ledger-comm.js +613 -0
- package/core/link/easyConnect.d.ts +23 -0
- package/core/link/easyConnect.d.ts.map +1 -0
- package/core/link/easyConnect.js +237 -0
- package/core/link/easyScript.d.ts +13 -0
- package/core/link/easyScript.d.ts.map +1 -0
- package/core/link/easyScript.js +52 -0
- package/core/link/index.d.ts +2 -0
- package/core/link/index.d.ts.map +1 -0
- package/core/link/index.js +17 -0
- package/core/link/interfaces/IAccount.d.ts +13 -0
- package/core/link/interfaces/IAccount.d.ts.map +1 -0
- package/core/link/interfaces/IAccount.js +2 -0
- package/core/link/interfaces/IFile.d.ts +7 -0
- package/core/link/interfaces/IFile.d.ts.map +1 -0
- package/core/link/interfaces/IFile.js +2 -0
- package/core/link/interfaces/ProofOfWork.d.ts +9 -0
- package/core/link/interfaces/ProofOfWork.d.ts.map +1 -0
- package/core/link/interfaces/ProofOfWork.js +12 -0
- package/core/link/interfaces/index.d.ts +4 -0
- package/core/link/interfaces/index.d.ts.map +1 -0
- package/core/link/interfaces/index.js +19 -0
- package/core/link/phantasmaLink.d.ts +41 -0
- package/core/link/phantasmaLink.d.ts.map +1 -0
- package/core/link/phantasmaLink.js +479 -0
- package/core/rpc/index.d.ts +3 -0
- package/core/rpc/index.d.ts.map +1 -0
- package/core/rpc/index.js +18 -0
- package/core/rpc/interfaces/ABIContract.d.ts +6 -0
- package/core/rpc/interfaces/ABIContract.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIContract.js +2 -0
- package/core/rpc/interfaces/ABIEvent.d.ts +7 -0
- package/core/rpc/interfaces/ABIEvent.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIEvent.js +2 -0
- package/core/rpc/interfaces/ABIMethod.d.ts +7 -0
- package/core/rpc/interfaces/ABIMethod.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIMethod.js +2 -0
- package/core/rpc/interfaces/ABIParameter.d.ts +5 -0
- package/core/rpc/interfaces/ABIParameter.d.ts.map +1 -0
- package/core/rpc/interfaces/ABIParameter.js +2 -0
- package/core/rpc/interfaces/Account.d.ts +16 -0
- package/core/rpc/interfaces/Account.d.ts.map +1 -0
- package/core/rpc/interfaces/Account.js +2 -0
- package/core/rpc/interfaces/AccountTransactions.d.ts +6 -0
- package/core/rpc/interfaces/AccountTransactions.d.ts.map +1 -0
- package/core/rpc/interfaces/AccountTransactions.js +2 -0
- package/core/rpc/interfaces/Archive.d.ts +11 -0
- package/core/rpc/interfaces/Archive.d.ts.map +1 -0
- package/core/rpc/interfaces/Archive.js +2 -0
- package/core/rpc/interfaces/Auction.d.ts +13 -0
- package/core/rpc/interfaces/Auction.d.ts.map +1 -0
- package/core/rpc/interfaces/Auction.js +2 -0
- package/core/rpc/interfaces/Balance.d.ts +8 -0
- package/core/rpc/interfaces/Balance.d.ts.map +1 -0
- package/core/rpc/interfaces/Balance.js +2 -0
- package/core/rpc/interfaces/Block.d.ts +17 -0
- package/core/rpc/interfaces/Block.d.ts.map +1 -0
- package/core/rpc/interfaces/Block.js +2 -0
- package/core/rpc/interfaces/Chain.d.ts +10 -0
- package/core/rpc/interfaces/Chain.d.ts.map +1 -0
- package/core/rpc/interfaces/Chain.js +2 -0
- package/core/rpc/interfaces/Channel.d.ts +13 -0
- package/core/rpc/interfaces/Channel.d.ts.map +1 -0
- package/core/rpc/interfaces/Channel.js +2 -0
- package/core/rpc/interfaces/Contract.d.ts +11 -0
- package/core/rpc/interfaces/Contract.d.ts.map +1 -0
- package/core/rpc/interfaces/Contract.js +2 -0
- package/core/rpc/interfaces/Dapp.d.ts +6 -0
- package/core/rpc/interfaces/Dapp.d.ts.map +1 -0
- package/core/rpc/interfaces/Dapp.js +2 -0
- package/core/rpc/interfaces/Event.d.ts +7 -0
- package/core/rpc/interfaces/Event.d.ts.map +1 -0
- package/core/rpc/interfaces/Event.js +2 -0
- package/core/rpc/interfaces/Governance.d.ts +5 -0
- package/core/rpc/interfaces/Governance.d.ts.map +1 -0
- package/core/rpc/interfaces/Governance.js +2 -0
- package/core/rpc/interfaces/Interop.d.ts +5 -0
- package/core/rpc/interfaces/Interop.d.ts.map +1 -0
- package/core/rpc/interfaces/Interop.js +2 -0
- package/core/rpc/interfaces/KeyValue.d.ts +5 -0
- package/core/rpc/interfaces/KeyValue.d.ts.map +1 -0
- package/core/rpc/interfaces/KeyValue.js +2 -0
- package/core/rpc/interfaces/Leaderboard.d.ts +6 -0
- package/core/rpc/interfaces/Leaderboard.d.ts.map +1 -0
- package/core/rpc/interfaces/Leaderboard.js +2 -0
- package/core/rpc/interfaces/LeaderboardRow.d.ts +5 -0
- package/core/rpc/interfaces/LeaderboardRow.d.ts.map +1 -0
- package/core/rpc/interfaces/LeaderboardRow.js +2 -0
- package/core/rpc/interfaces/NFT.d.ts +14 -0
- package/core/rpc/interfaces/NFT.d.ts.map +1 -0
- package/core/rpc/interfaces/NFT.js +2 -0
- package/core/rpc/interfaces/Nexus.d.ts +14 -0
- package/core/rpc/interfaces/Nexus.d.ts.map +1 -0
- package/core/rpc/interfaces/Nexus.js +2 -0
- package/core/rpc/interfaces/Oracle.d.ts +5 -0
- package/core/rpc/interfaces/Oracle.d.ts.map +1 -0
- package/core/rpc/interfaces/Oracle.js +2 -0
- package/core/rpc/interfaces/Organization.d.ts +6 -0
- package/core/rpc/interfaces/Organization.d.ts.map +1 -0
- package/core/rpc/interfaces/Organization.js +2 -0
- package/core/rpc/interfaces/Paginated.d.ts +8 -0
- package/core/rpc/interfaces/Paginated.d.ts.map +1 -0
- package/core/rpc/interfaces/Paginated.js +2 -0
- package/core/rpc/interfaces/Peer.d.ts +8 -0
- package/core/rpc/interfaces/Peer.d.ts.map +1 -0
- package/core/rpc/interfaces/Peer.js +2 -0
- package/core/rpc/interfaces/Platform.d.ts +9 -0
- package/core/rpc/interfaces/Platform.d.ts.map +1 -0
- package/core/rpc/interfaces/Platform.js +2 -0
- package/core/rpc/interfaces/Receipt.d.ts +10 -0
- package/core/rpc/interfaces/Receipt.d.ts.map +1 -0
- package/core/rpc/interfaces/Receipt.js +2 -0
- package/core/rpc/interfaces/Script.d.ts +9 -0
- package/core/rpc/interfaces/Script.d.ts.map +1 -0
- package/core/rpc/interfaces/Script.js +2 -0
- package/core/rpc/interfaces/SendRawTx.d.ts +5 -0
- package/core/rpc/interfaces/SendRawTx.d.ts.map +1 -0
- package/core/rpc/interfaces/SendRawTx.js +2 -0
- package/core/rpc/interfaces/SignatureResult.d.ts +5 -0
- package/core/rpc/interfaces/SignatureResult.d.ts.map +1 -0
- package/core/rpc/interfaces/SignatureResult.js +2 -0
- package/core/rpc/interfaces/Stake.d.ts +6 -0
- package/core/rpc/interfaces/Stake.d.ts.map +1 -0
- package/core/rpc/interfaces/Stake.js +2 -0
- package/core/rpc/interfaces/Storage.d.ts +8 -0
- package/core/rpc/interfaces/Storage.d.ts.map +1 -0
- package/core/rpc/interfaces/Storage.js +2 -0
- package/core/rpc/interfaces/Swap.d.ts +13 -0
- package/core/rpc/interfaces/Swap.d.ts.map +1 -0
- package/core/rpc/interfaces/Swap.js +2 -0
- package/core/rpc/interfaces/Token.d.ts +19 -0
- package/core/rpc/interfaces/Token.d.ts.map +1 -0
- package/core/rpc/interfaces/Token.js +2 -0
- package/core/rpc/interfaces/TokenData.d.ts +13 -0
- package/core/rpc/interfaces/TokenData.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenData.js +2 -0
- package/core/rpc/interfaces/TokenExternal.d.ts +5 -0
- package/core/rpc/interfaces/TokenExternal.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenExternal.js +2 -0
- package/core/rpc/interfaces/TokenPrice.d.ts +8 -0
- package/core/rpc/interfaces/TokenPrice.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenPrice.js +2 -0
- package/core/rpc/interfaces/TokenSeries.d.ts +12 -0
- package/core/rpc/interfaces/TokenSeries.d.ts.map +1 -0
- package/core/rpc/interfaces/TokenSeries.js +2 -0
- package/core/rpc/interfaces/TransactionData.d.ts +23 -0
- package/core/rpc/interfaces/TransactionData.d.ts.map +1 -0
- package/core/rpc/interfaces/TransactionData.js +2 -0
- package/core/rpc/interfaces/Validator.d.ts +5 -0
- package/core/rpc/interfaces/Validator.d.ts.map +1 -0
- package/core/rpc/interfaces/Validator.js +2 -0
- package/core/rpc/interfaces/index.d.ts +42 -0
- package/core/rpc/interfaces/index.d.ts.map +1 -0
- package/core/rpc/interfaces/index.js +57 -0
- package/core/rpc/phantasma.d.ts +89 -0
- package/core/rpc/phantasma.d.ts.map +1 -0
- package/core/rpc/phantasma.js +900 -0
- package/core/tx/SignatureKind.js +9 -0
- package/core/tx/Transaction.d.ts +28 -0
- package/core/tx/Transaction.d.ts.map +1 -0
- package/core/tx/Transaction.js +209 -0
- package/core/tx/index.d.ts +3 -0
- package/core/tx/index.d.ts.map +1 -0
- package/core/tx/index.js +18 -0
- package/core/tx/utils.d.ts +10 -0
- package/core/tx/utils.d.ts.map +1 -0
- package/core/tx/utils.js +147 -0
- package/core/types/Address.d.ts +41 -0
- package/core/types/Address.d.ts.map +1 -0
- package/core/types/Address.js +276 -0
- package/core/types/Consensus.d.ts +61 -0
- package/core/types/Consensus.d.ts.map +1 -0
- package/core/types/Consensus.js +151 -0
- package/core/types/Contract.d.ts +60 -0
- package/core/types/Contract.d.ts.map +1 -0
- package/core/types/Contract.js +342 -0
- package/core/types/DomainSettings.d.ts +87 -0
- package/core/types/DomainSettings.d.ts.map +1 -0
- package/core/types/DomainSettings.js +107 -0
- package/core/types/Ed25519Signature.d.ts +16 -0
- package/core/types/Ed25519Signature.d.ts.map +1 -0
- package/core/types/Ed25519Signature.js +78 -0
- package/core/types/Entropy.d.ts +5 -0
- package/core/types/Entropy.d.ts.map +1 -0
- package/core/types/Entropy.js +24 -0
- package/core/types/Extensions/Base16.d.ts +7 -0
- package/core/types/Extensions/Base16.d.ts.map +1 -0
- package/core/types/Extensions/Base16.js +36 -0
- package/core/types/Extensions/BinaryReader.d.ts +17 -0
- package/core/types/Extensions/BinaryReader.d.ts.map +1 -0
- package/core/types/Extensions/BinaryReader.js +192 -0
- package/core/types/Extensions/BinaryWriter.d.ts +25 -0
- package/core/types/Extensions/BinaryWriter.d.ts.map +1 -0
- package/core/types/Extensions/BinaryWriter.js +191 -0
- package/core/types/Extensions/Describer.d.ts +5 -0
- package/core/types/Extensions/Describer.d.ts.map +1 -0
- package/core/types/Extensions/Describer.js +25 -0
- package/core/types/Extensions/PBinaryReader.d.ts +42 -0
- package/core/types/Extensions/PBinaryReader.d.ts.map +1 -0
- package/core/types/Extensions/PBinaryReader.js +269 -0
- package/core/types/Extensions/PBinaryWriter.d.ts +49 -0
- package/core/types/Extensions/PBinaryWriter.d.ts.map +1 -0
- package/core/types/Extensions/PBinaryWriter.js +250 -0
- package/core/types/Extensions/TableColumns.d.ts +5 -0
- package/core/types/Extensions/TableColumns.d.ts.map +1 -0
- package/core/types/Extensions/TableColumns.js +22 -0
- package/core/types/Extensions/index.d.ts +5 -0
- package/core/types/Extensions/index.d.ts.map +1 -0
- package/core/types/Extensions/index.js +20 -0
- package/core/types/PhantasmaKeys.d.ts +19 -0
- package/core/types/PhantasmaKeys.d.ts.map +1 -0
- package/core/types/PhantasmaKeys.js +92 -0
- package/core/types/Serialization.d.ts +22 -0
- package/core/types/Serialization.d.ts.map +1 -0
- package/core/types/Serialization.js +195 -0
- package/core/types/Stack.d.ts +16 -0
- package/core/types/Stack.d.ts.map +1 -0
- package/core/types/Stack.js +42 -0
- package/core/types/Timestamp.d.ts +26 -0
- package/core/types/Timestamp.d.ts.map +1 -0
- package/core/types/Timestamp.js +74 -0
- package/core/types/index.d.ts +12 -0
- package/core/types/index.d.ts.map +1 -0
- package/core/types/index.js +27 -0
- package/core/utils/index.d.ts +25 -0
- package/core/utils/index.d.ts.map +1 -0
- package/core/utils/index.js +236 -0
- package/core/vm/Contracts.d.ts +17 -0
- package/core/vm/Contracts.d.ts.map +1 -0
- package/core/vm/Contracts.js +20 -0
- package/core/vm/Decoder.d.ts +19 -0
- package/core/vm/Decoder.d.ts.map +1 -0
- package/core/vm/Decoder.js +175 -0
- package/core/vm/EventData.d.ts +97 -0
- package/core/vm/EventData.d.ts.map +1 -0
- package/core/vm/EventData.js +134 -0
- package/core/vm/Opcode.d.ts +57 -0
- package/core/vm/Opcode.d.ts.map +1 -0
- package/core/vm/Opcode.js +69 -0
- package/core/vm/ScriptBuilder.d.ts +65 -0
- package/core/vm/ScriptBuilder.d.ts.map +1 -0
- package/core/vm/ScriptBuilder.js +592 -0
- package/core/vm/VMObject.d.ts +55 -0
- package/core/vm/VMObject.d.ts.map +1 -0
- package/core/vm/VMObject.js +1101 -0
- package/core/vm/VMType.d.ts +12 -0
- package/core/vm/VMType.d.ts.map +1 -0
- package/core/vm/VMType.js +15 -0
- package/core/vm/index.d.ts +8 -0
- package/core/vm/index.d.ts.map +1 -0
- package/core/vm/index.js +23 -0
- package/html/TestWebPage.html +187 -0
- package/html/phantasma.js +60504 -0
- package/index.d.ts +5 -0
- package/index.d.ts.map +1 -0
- package/index.js +36 -0
- package/jest.config.js +5 -0
- package/package.json +67 -0
- package/src/core/index.ts +9 -0
- package/src/core/interfaces/IContract.ts +28 -0
- package/src/core/interfaces/IKeyPair.ts +14 -0
- package/src/core/interfaces/ISerializable.ts +6 -0
- package/src/core/interfaces/IStack.ts +6 -0
- package/src/core/interfaces/IToken.ts +31 -0
- package/src/core/interfaces/Signature.ts +32 -0
- package/src/core/interfaces/index.ts +6 -0
- package/src/core/ledger/Address-Transcode.ts +44 -0
- package/src/core/ledger/Ledger-Commands.ts +463 -0
- package/src/core/ledger/Ledger-Utils.ts +549 -0
- package/src/core/ledger/Mnemonic.ts +79 -0
- package/src/core/ledger/Transaction-Sign.ts +126 -0
- package/src/core/ledger/Transaction-Transcode.ts +56 -0
- package/src/core/ledger/index.ts +8 -0
- package/src/core/ledger/interfaces/ApplicationNameResponse.ts +5 -0
- package/src/core/ledger/interfaces/Device.ts +6 -0
- package/src/core/ledger/interfaces/DeviceResponse.ts +6 -0
- package/src/core/ledger/interfaces/Ledger.ts +10 -0
- package/src/core/ledger/interfaces/LedgerBalanceFromLedgerResponse.ts +9 -0
- package/src/core/ledger/interfaces/LedgerConfig.ts +17 -0
- package/src/core/ledger/interfaces/LedgerDeviceInfoResponse.ts +7 -0
- package/src/core/ledger/interfaces/LedgerSendTransactionResponse.ts +4 -0
- package/src/core/ledger/interfaces/LedgerSigner.ts +6 -0
- package/src/core/ledger/interfaces/LedgerSignerData.ts +8 -0
- package/src/core/ledger/interfaces/PublicKeyResponse.ts +5 -0
- package/src/core/ledger/interfaces/SignResponse.ts +5 -0
- package/src/core/ledger/interfaces/VersionResponse.ts +5 -0
- package/src/core/ledger/interfaces/index.ts +13 -0
- package/src/core/link/easyConnect.ts +214 -0
- package/src/core/link/easyScript.ts +67 -0
- package/src/core/link/index.ts +1 -0
- package/src/core/link/interfaces/IAccount.ts +13 -0
- package/src/core/link/interfaces/IFile.ts +6 -0
- package/src/core/link/interfaces/ProofOfWork.ts +8 -0
- package/src/core/link/interfaces/index.ts +3 -0
- package/src/core/link/phantasmaLink.ts +561 -0
- package/src/core/rpc/index.ts +2 -0
- package/src/core/rpc/interfaces/ABIContract.ts +6 -0
- package/src/core/rpc/interfaces/ABIEvent.ts +6 -0
- package/src/core/rpc/interfaces/ABIMethod.ts +7 -0
- package/src/core/rpc/interfaces/ABIParameter.ts +4 -0
- package/src/core/rpc/interfaces/Account.ts +16 -0
- package/src/core/rpc/interfaces/AccountTransactions.ts +6 -0
- package/src/core/rpc/interfaces/Archive.ts +10 -0
- package/src/core/rpc/interfaces/Auction.ts +12 -0
- package/src/core/rpc/interfaces/Balance.ts +7 -0
- package/src/core/rpc/interfaces/Block.ts +17 -0
- package/src/core/rpc/interfaces/Chain.ts +9 -0
- package/src/core/rpc/interfaces/Channel.ts +12 -0
- package/src/core/rpc/interfaces/Contract.ts +11 -0
- package/src/core/rpc/interfaces/Dapp.ts +5 -0
- package/src/core/rpc/interfaces/Event.ts +6 -0
- package/src/core/rpc/interfaces/Governance.ts +4 -0
- package/src/core/rpc/interfaces/Interop.ts +4 -0
- package/src/core/rpc/interfaces/KeyValue.ts +4 -0
- package/src/core/rpc/interfaces/Leaderboard.ts +6 -0
- package/src/core/rpc/interfaces/LeaderboardRow.ts +4 -0
- package/src/core/rpc/interfaces/NFT.ts +14 -0
- package/src/core/rpc/interfaces/Nexus.ts +14 -0
- package/src/core/rpc/interfaces/Oracle.ts +4 -0
- package/src/core/rpc/interfaces/Organization.ts +5 -0
- package/src/core/rpc/interfaces/Paginated.ts +7 -0
- package/src/core/rpc/interfaces/Peer.ts +7 -0
- package/src/core/rpc/interfaces/Platform.ts +9 -0
- package/src/core/rpc/interfaces/Receipt.ts +9 -0
- package/src/core/rpc/interfaces/Script.ts +9 -0
- package/src/core/rpc/interfaces/SendRawTx.ts +4 -0
- package/src/core/rpc/interfaces/SignatureResult.ts +4 -0
- package/src/core/rpc/interfaces/Stake.ts +5 -0
- package/src/core/rpc/interfaces/Storage.ts +8 -0
- package/src/core/rpc/interfaces/Swap.ts +12 -0
- package/src/core/rpc/interfaces/Token.ts +19 -0
- package/src/core/rpc/interfaces/TokenData.ts +12 -0
- package/src/core/rpc/interfaces/TokenExternal.ts +4 -0
- package/src/core/rpc/interfaces/TokenPrice.ts +7 -0
- package/src/core/rpc/interfaces/TokenSeries.ts +12 -0
- package/src/core/rpc/interfaces/TransactionData.ts +23 -0
- package/src/core/rpc/interfaces/Validator.ts +4 -0
- package/src/core/rpc/interfaces/index.ts +41 -0
- package/src/core/rpc/phantasma.ts +466 -0
- package/src/core/tx/Transaction.ts +258 -0
- package/src/core/tx/index.ts +2 -0
- package/src/core/tx/utils.ts +106 -0
- package/src/core/types/Address.ts +290 -0
- package/src/core/types/Consensus.ts +181 -0
- package/src/core/types/Contract.ts +324 -0
- package/src/core/types/DomainSettings.ts +128 -0
- package/src/core/types/Ed25519Signature.ts +78 -0
- package/src/core/types/Entropy.ts +16 -0
- package/src/core/types/Extensions/Base16.ts +36 -0
- package/src/core/types/Extensions/Describer.ts +17 -0
- package/src/core/types/Extensions/PBinaryReader.ts +247 -0
- package/src/core/types/Extensions/PBinaryWriter.ts +278 -0
- package/src/core/types/Extensions/index.ts +4 -0
- package/src/core/types/PhantasmaKeys.ts +119 -0
- package/src/core/types/Serialization.ts +211 -0
- package/src/core/types/Stack.ts +46 -0
- package/src/core/types/Timestamp.ts +93 -0
- package/src/core/types/index.ts +11 -0
- package/src/core/utils/index.ts +206 -0
- package/src/core/vm/Contracts.ts +17 -0
- package/src/core/vm/Decoder.ts +162 -0
- package/src/core/vm/Disassembler.ts +1 -0
- package/src/core/vm/EventData.ts +135 -0
- package/src/core/vm/Opcode.ts +74 -0
- package/src/core/vm/ScriptBuilder.ts +588 -0
- package/src/core/vm/VMObject.ts +1162 -0
- package/src/core/vm/VMType.ts +11 -0
- package/src/core/vm/index.ts +7 -0
- package/src/core/vm/utils/DisasmMethodCall.ts +22 -0
- package/src/core/vm/utils/DisasmUtils.ts +89 -0
- package/src/core/vm/utils/index.ts +2 -0
- package/src/index.ts +7 -0
- package/tests/VMObject.test.ts +146 -0
- package/tests/ledger/Address-Transacode.test.ts +26 -0
- package/tests/tx/Transaction.test.ts +274 -0
- package/tests/types/Address.test.ts +26 -0
- package/tests/types/Consensus.test.ts +67 -0
- package/tsconfig.json +29 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { IKeyPair } from "../interfaces/IKeyPair";
|
|
2
|
+
import { Address } from "./Address";
|
|
3
|
+
import base58 from "bs58";
|
|
4
|
+
import WIF from "wif";
|
|
5
|
+
import { Signature } from "../interfaces/Signature";
|
|
6
|
+
import {
|
|
7
|
+
hexStringToUint8Array,
|
|
8
|
+
stringToUint8Array,
|
|
9
|
+
uint8ArrayToBytes,
|
|
10
|
+
uint8ArrayToHex,
|
|
11
|
+
uint8ArrayToString,
|
|
12
|
+
uint8ArrayToStringDefault,
|
|
13
|
+
} from "../utils";
|
|
14
|
+
import { Ed25519Signature } from "./Ed25519Signature";
|
|
15
|
+
import pkg from 'elliptic';
|
|
16
|
+
import { Entropy } from "./Entropy";
|
|
17
|
+
import {
|
|
18
|
+
generateNewWif,
|
|
19
|
+
getAddressFromWif,
|
|
20
|
+
getPublicKeyFromPrivateKey,
|
|
21
|
+
getWifFromPrivateKey,
|
|
22
|
+
} from "../tx";
|
|
23
|
+
const { eddsa } = pkg;
|
|
24
|
+
const ed25519 = new eddsa("ed25519");
|
|
25
|
+
|
|
26
|
+
export class PhantasmaKeys implements IKeyPair {
|
|
27
|
+
private _privateKey: Uint8Array;
|
|
28
|
+
public get PrivateKey() {
|
|
29
|
+
return this._privateKey;
|
|
30
|
+
}
|
|
31
|
+
private _publicKey: Uint8Array;
|
|
32
|
+
public get PublicKey() {
|
|
33
|
+
return this._publicKey;
|
|
34
|
+
}
|
|
35
|
+
public readonly Address: Address;
|
|
36
|
+
|
|
37
|
+
public static readonly PrivateKeyLength = 32;
|
|
38
|
+
|
|
39
|
+
constructor(privateKey: Uint8Array) {
|
|
40
|
+
if (privateKey.length == 64) {
|
|
41
|
+
privateKey = privateKey.slice(0, 32);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (privateKey.length != PhantasmaKeys.PrivateKeyLength) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
`privateKey should have length ${PhantasmaKeys.PrivateKeyLength} but has ${privateKey.length}`
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
this._privateKey = new Uint8Array(PhantasmaKeys.PrivateKeyLength);
|
|
51
|
+
this._privateKey.set(privateKey);
|
|
52
|
+
let wif = getWifFromPrivateKey(uint8ArrayToHex(privateKey));
|
|
53
|
+
|
|
54
|
+
const privateKeyString = uint8ArrayToHex(this._privateKey);
|
|
55
|
+
const privateKeyBuffer = Buffer.from(privateKeyString, "hex");
|
|
56
|
+
const publicKey = ed25519.keyFromSecret(privateKeyBuffer).getPublic();
|
|
57
|
+
this._publicKey = publicKey;
|
|
58
|
+
|
|
59
|
+
this.Address = Address.FromKey(this);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public toString() {
|
|
63
|
+
return this.Address.Text;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public static generate(): PhantasmaKeys {
|
|
67
|
+
const privateKey = Entropy.GetRandomBytes(PhantasmaKeys.PrivateKeyLength);
|
|
68
|
+
|
|
69
|
+
const pair = new PhantasmaKeys(privateKey);
|
|
70
|
+
return pair;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public static fromWIF(wif: string): PhantasmaKeys {
|
|
74
|
+
if (!wif) {
|
|
75
|
+
throw new Error("WIF required");
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
let data = base58.decode(wif); // checkdecode
|
|
79
|
+
if (data.length == 38) {
|
|
80
|
+
data = data.slice(0, 34);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (data.length != 34 || data[0] != 0x80 || data[33] != 0x01) {
|
|
84
|
+
throw new Error("Invalid WIF format");
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
const privateKey = data.slice(1, 33);
|
|
88
|
+
return new PhantasmaKeys(privateKey);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public toWIF(): string {
|
|
92
|
+
const privateKeyString = uint8ArrayToHex(this._privateKey);
|
|
93
|
+
const privatekeyBuffer = Buffer.from(privateKeyString, "hex");
|
|
94
|
+
const wif = WIF.encode(128, privatekeyBuffer, true); //uint8ArrayToHex(data); // .base58CheckEncode();
|
|
95
|
+
return wif;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
public static xor(x: Uint8Array, y: Uint8Array): Uint8Array {
|
|
99
|
+
if (x.length != y.length) {
|
|
100
|
+
throw new Error("x and y should have the same length");
|
|
101
|
+
}
|
|
102
|
+
const result = new Uint8Array(x.length);
|
|
103
|
+
for (let i = 0; i < x.length; i++) {
|
|
104
|
+
result[i] = x[i] ^ y[i];
|
|
105
|
+
}
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
public Sign(
|
|
110
|
+
msg: Uint8Array,
|
|
111
|
+
customSignFunction?: (
|
|
112
|
+
msg: Uint8Array,
|
|
113
|
+
privateKey: Uint8Array,
|
|
114
|
+
publicKey: Uint8Array
|
|
115
|
+
) => Uint8Array
|
|
116
|
+
): Signature {
|
|
117
|
+
return Ed25519Signature.Generate(this, msg);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { Type } from "typescript";
|
|
2
|
+
import { Base16, PBinaryReader, PBinaryWriter } from "./Extensions";
|
|
3
|
+
import { Timestamp } from "./Timestamp";
|
|
4
|
+
import { ISerializable } from "../interfaces";
|
|
5
|
+
import { stringToUint8Array, uint8ArrayToBytes } from "../utils";
|
|
6
|
+
|
|
7
|
+
export interface CustomReader {
|
|
8
|
+
(reader: PBinaryReader): any;
|
|
9
|
+
}
|
|
10
|
+
export interface CustomWriter {
|
|
11
|
+
(writer: PBinaryWriter, obj: any): void;
|
|
12
|
+
}
|
|
13
|
+
//function CustomWriter(writer: PBinaryWriter, obj: any): void;
|
|
14
|
+
//function CustomReader(reader: PBinaryReader): any;
|
|
15
|
+
|
|
16
|
+
export class CustomSerializer {
|
|
17
|
+
readonly Read: CustomReader;
|
|
18
|
+
readonly Write: CustomWriter;
|
|
19
|
+
constructor(reader: CustomReader, writer: CustomWriter) {
|
|
20
|
+
this.Read = reader;
|
|
21
|
+
this.Write = writer;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export class Serialization<T> {
|
|
26
|
+
private static _customSerializers: Map<string, CustomSerializer> = new Map<
|
|
27
|
+
string,
|
|
28
|
+
CustomSerializer
|
|
29
|
+
>(); //: { [key: string]: CustomSerializer };
|
|
30
|
+
|
|
31
|
+
static RegisterType<T>(type: T, reader: CustomReader, writer: CustomWriter) {
|
|
32
|
+
Serialization._customSerializers[typeof type] = new CustomSerializer(
|
|
33
|
+
reader,
|
|
34
|
+
writer
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static SerializeEnum(obj: any): Uint8Array {
|
|
39
|
+
if (!obj) {
|
|
40
|
+
return new Uint8Array();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (obj instanceof Uint8Array) {
|
|
44
|
+
return obj;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
let writer = new PBinaryWriter();
|
|
48
|
+
writer.writeEnum(obj);
|
|
49
|
+
return writer.toUint8Array();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static Serialize(obj: any): Uint8Array {
|
|
53
|
+
if (!obj) {
|
|
54
|
+
return new Uint8Array();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (obj instanceof Uint8Array) {
|
|
58
|
+
return obj;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
//let jsonString = JSON.stringify(obj);
|
|
62
|
+
let writer = new PBinaryWriter();
|
|
63
|
+
this.SerializeObject(writer, obj, typeof obj);
|
|
64
|
+
//let jsonAsUint8 = new TextEncoder().encode(jsonString);
|
|
65
|
+
return writer.toUint8Array();
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static SerializeObject(writer: PBinaryWriter, obj: any, type: any | null) {
|
|
69
|
+
if (type == null || type == undefined) {
|
|
70
|
+
type = typeof obj;
|
|
71
|
+
this.SerializeObject(writer, obj, type);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (Serialization._customSerializers.has(typeof type)) {
|
|
76
|
+
var serializer = Serialization._customSerializers[typeof type];
|
|
77
|
+
serializer.Write(writer, obj);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/*if (typeof obj == "void") {
|
|
82
|
+
return;
|
|
83
|
+
}*/
|
|
84
|
+
const structType: any = Object.getPrototypeOf(obj).constructor.name;
|
|
85
|
+
const result = Object.apply(structType);
|
|
86
|
+
let localType = Object.apply(typeof type);
|
|
87
|
+
//console.log(localType);
|
|
88
|
+
|
|
89
|
+
if (obj instanceof Boolean || typeof obj == "boolean") {
|
|
90
|
+
writer.writeByte(obj ? 1 : 0);
|
|
91
|
+
return;
|
|
92
|
+
} else if (obj instanceof Number || typeof obj == "number") {
|
|
93
|
+
writer.writeByte(stringToUint8Array(obj.toString()).length);
|
|
94
|
+
writer.writeVarInt(obj as number);
|
|
95
|
+
return;
|
|
96
|
+
} else if (obj instanceof BigInt || typeof obj == "bigint") {
|
|
97
|
+
writer.writeBigInteger(obj);
|
|
98
|
+
} else if (obj instanceof String || typeof obj == "string") {
|
|
99
|
+
writer.writeString(obj as string);
|
|
100
|
+
return;
|
|
101
|
+
} else if (obj instanceof Timestamp) {
|
|
102
|
+
writer.writeTimestamp(obj);
|
|
103
|
+
return;
|
|
104
|
+
} else if (obj instanceof Date) {
|
|
105
|
+
writer.writeDateTime(obj);
|
|
106
|
+
return;
|
|
107
|
+
} else if (
|
|
108
|
+
typeof obj.UnserializeData === "function" &&
|
|
109
|
+
typeof obj.SerializeData === "function"
|
|
110
|
+
) {
|
|
111
|
+
(obj as ISerializable).SerializeData(writer);
|
|
112
|
+
return;
|
|
113
|
+
} else if (Array.isArray(obj)) {
|
|
114
|
+
writer.writeVarInt(obj.length);
|
|
115
|
+
obj.forEach((entry) => {
|
|
116
|
+
this.SerializeObject(writer, entry, typeof entry);
|
|
117
|
+
});
|
|
118
|
+
return;
|
|
119
|
+
} else if (Object.getPrototypeOf(type) == "enum") {
|
|
120
|
+
writer.writeByte(obj as unknown as number);
|
|
121
|
+
return;
|
|
122
|
+
} else if (obj instanceof Uint8Array) {
|
|
123
|
+
writer.writeByteArray(Array.from(obj));
|
|
124
|
+
} else {
|
|
125
|
+
// TODO: Add support for other types
|
|
126
|
+
// Get the keys of the object
|
|
127
|
+
const fields = Object.keys(obj);
|
|
128
|
+
fields.forEach((field) => {
|
|
129
|
+
let value = obj[field];
|
|
130
|
+
this.SerializeObject(writer, value, typeof value);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
static Unserialize<T>(
|
|
136
|
+
bytesOrBytes: Uint8Array | PBinaryReader,
|
|
137
|
+
type?: any
|
|
138
|
+
): T {
|
|
139
|
+
if (bytesOrBytes instanceof PBinaryReader) {
|
|
140
|
+
return Serialization.UnserializeObject(bytesOrBytes, type) as T;
|
|
141
|
+
}
|
|
142
|
+
if (!bytesOrBytes || bytesOrBytes.length === 0) {
|
|
143
|
+
return null as T;
|
|
144
|
+
}
|
|
145
|
+
//let type = Object.prototype.propertyIsEnumerable(T);
|
|
146
|
+
let stream: PBinaryReader = new PBinaryReader(bytesOrBytes);
|
|
147
|
+
return Serialization.UnserializeObject<T>(stream, type) as T;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
static UnserializeObject<T extends any>(reader: PBinaryReader, type: any): T {
|
|
151
|
+
if (Serialization._customSerializers.has(typeof type)) {
|
|
152
|
+
var serializer = Serialization._customSerializers[typeof type];
|
|
153
|
+
return serializer.Read(reader);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (type == null || type == undefined) {
|
|
157
|
+
return null as T;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
let localType; //: typeof type;
|
|
161
|
+
|
|
162
|
+
if (type.name != undefined) {
|
|
163
|
+
let className = type.name as T;
|
|
164
|
+
localType = Object.apply(className);
|
|
165
|
+
} else {
|
|
166
|
+
localType = new type();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
if (
|
|
170
|
+
localType instanceof Boolean ||
|
|
171
|
+
typeof localType == "boolean" ||
|
|
172
|
+
type.name == "Boolean"
|
|
173
|
+
) {
|
|
174
|
+
return reader.readBoolean() as unknown as T;
|
|
175
|
+
} else if (localType instanceof Number || typeof localType == "number") {
|
|
176
|
+
return reader.readVarInt() as unknown as T;
|
|
177
|
+
} else if (localType instanceof BigInt || typeof localType == "bigint") {
|
|
178
|
+
return reader.readBigInteger() as unknown as T;
|
|
179
|
+
} else if (localType instanceof String || typeof localType == "string") {
|
|
180
|
+
return reader.readVarString() as unknown as T;
|
|
181
|
+
} else if (localType instanceof Timestamp) {
|
|
182
|
+
return new Timestamp(reader.readVarInt()) as unknown as T;
|
|
183
|
+
} else if (
|
|
184
|
+
typeof localType.UnserializeData === "function" &&
|
|
185
|
+
typeof localType.SerializeData === "function"
|
|
186
|
+
) {
|
|
187
|
+
let obj = localType;
|
|
188
|
+
obj.UnserializeData(reader);
|
|
189
|
+
return obj as T;
|
|
190
|
+
} else if (Array.isArray(type)) {
|
|
191
|
+
var len = reader.readByte();
|
|
192
|
+
var arr = new Array(len);
|
|
193
|
+
for (let i = 0; i < len; i++) {
|
|
194
|
+
arr[i] = this.UnserializeObject(reader, type[i]);
|
|
195
|
+
}
|
|
196
|
+
return arr as unknown as T;
|
|
197
|
+
} else if (Object.getPrototypeOf(type) == "enum") {
|
|
198
|
+
return reader.readByte() as unknown as T;
|
|
199
|
+
} else {
|
|
200
|
+
const fields = Object.keys(localType as T);
|
|
201
|
+
/*console.log(fields);
|
|
202
|
+
fields.forEach((field) => {
|
|
203
|
+
localType[field] = this.UnserializeObject(
|
|
204
|
+
reader,
|
|
205
|
+
typeof localType[field]
|
|
206
|
+
);
|
|
207
|
+
});
|
|
208
|
+
return localType as T;*/
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { IStack } from "../interfaces";
|
|
2
|
+
|
|
3
|
+
export class Stack<T> implements IStack<T> {
|
|
4
|
+
private storage: T[] = [];
|
|
5
|
+
|
|
6
|
+
constructor(private capacity: number = Infinity) {}
|
|
7
|
+
|
|
8
|
+
push(item: T): void {
|
|
9
|
+
if (this.size() === this.capacity) {
|
|
10
|
+
throw Error("Stack has reached max capacity, you cannot add more items");
|
|
11
|
+
}
|
|
12
|
+
this.storage.push(item);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
pop(): T | undefined {
|
|
16
|
+
return this.storage.pop();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
peek(): T | undefined {
|
|
20
|
+
return this.storage[this.size() - 1];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
size(): number {
|
|
24
|
+
return this.storage.length;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
isEmpty(): boolean {
|
|
28
|
+
return this.size() === 0;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
toArray(): T[] {
|
|
32
|
+
return this.storage;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
clear(): void {
|
|
36
|
+
this.storage = [];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
toString(): string {
|
|
40
|
+
return this.storage.toString();
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
isFull(): boolean {
|
|
44
|
+
return this.capacity === this.size();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export class Timestamp {
|
|
2
|
+
public value: number;
|
|
3
|
+
|
|
4
|
+
constructor(value: number) {
|
|
5
|
+
this.value = value;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
public toString() {
|
|
9
|
+
return new Date(this.value * 1000).toUTCString();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public toStringFormat(format: string) {
|
|
13
|
+
return new Date(this.value * 1000).toUTCString();
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
public static now = Date.now();
|
|
17
|
+
public static null = new Timestamp(0);
|
|
18
|
+
|
|
19
|
+
public compareTo(other: Timestamp) {
|
|
20
|
+
if (other.value === this.value) {
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (this.value < other.value) {
|
|
25
|
+
return -1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return 1;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public equals(obj: any) {
|
|
32
|
+
if (!(obj instanceof Timestamp)) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return this.value === obj.value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public getHashCode() {
|
|
40
|
+
return this.value;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public getSize() {
|
|
44
|
+
return 4;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public static equal(A: Timestamp, B: Timestamp) {
|
|
48
|
+
return A.value === B.value;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public static notEqual(A: Timestamp, B: Timestamp) {
|
|
52
|
+
return !(A.value === B.value);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public static lessThan(A: Timestamp, B: Timestamp) {
|
|
56
|
+
return A.value < B.value;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public static greaterThan(A: Timestamp, B: Timestamp) {
|
|
60
|
+
return A.value > B.value;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
public static lessThanOrEqual(A: Timestamp, B: Timestamp) {
|
|
64
|
+
return A.value <= B.value;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public static greaterThanOrEqual(A: Timestamp, B: Timestamp) {
|
|
68
|
+
return A.value >= B.value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public static subtract(A: Timestamp, B: Timestamp) {
|
|
72
|
+
return A.value - B.value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public static fromNumber(ticks: number) {
|
|
76
|
+
return new Timestamp(ticks);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public static fromDate(time: Date) {
|
|
80
|
+
return new Timestamp(time.getTime() / 1000);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public static addTimeSpan(A: Timestamp, B: number) {
|
|
84
|
+
return A.value + B;
|
|
85
|
+
}
|
|
86
|
+
public static subtractTimeSpan(A: Timestamp, B: number) {
|
|
87
|
+
return A.value - B;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public static Serialize() {}
|
|
91
|
+
|
|
92
|
+
public static Unserialize() {}
|
|
93
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./Consensus";
|
|
2
|
+
export * from "./Timestamp";
|
|
3
|
+
export * from "./Stack";
|
|
4
|
+
export * from "./Address";
|
|
5
|
+
export * from "./Contract";
|
|
6
|
+
export * from "./Ed25519Signature";
|
|
7
|
+
export * from "./PhantasmaKeys";
|
|
8
|
+
export * from "./DomainSettings";
|
|
9
|
+
export * from "./Entropy";
|
|
10
|
+
export * from "./Extensions";
|
|
11
|
+
export * from "./Serialization";
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
export function hexToByteArray(hexBytes: string) {
|
|
2
|
+
const res = [hexBytes.length / 2];
|
|
3
|
+
for (let i = 0; i < hexBytes.length; i += 2) {
|
|
4
|
+
const hexdig = hexBytes.substr(i, 2);
|
|
5
|
+
if (hexdig == '') {
|
|
6
|
+
res.push(0);
|
|
7
|
+
} else res.push(parseInt(hexdig, 16));
|
|
8
|
+
}
|
|
9
|
+
return res;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function HexToBytes(hex: string) {
|
|
13
|
+
return hexToByteArray(hex);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function hexToBuffer(hex: string) {
|
|
17
|
+
return new Uint8Array(hexToByteArray(hex));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function bufferToHex(buffer: ArrayBuffer | ArrayLike<number> | Uint8Array) {
|
|
21
|
+
return byteArrayToHex(buffer);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function hexStringToBytes(hexString: string) {
|
|
25
|
+
for (var bytes = [], c = 0; c < hexString.length; c += 2)
|
|
26
|
+
bytes.push(parseInt(hexString.substr(c, 2), 16));
|
|
27
|
+
return bytes;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function byteArrayToHex(arr: ArrayBuffer | ArrayLike<number> | Uint8Array): string {
|
|
31
|
+
if (typeof arr !== 'object') {
|
|
32
|
+
throw new Error(`ba2hex expects an array.Input was ${arr}`);
|
|
33
|
+
}
|
|
34
|
+
let result = '';
|
|
35
|
+
const intArray = new Uint8Array(arr);
|
|
36
|
+
for (const i of intArray) {
|
|
37
|
+
let str = i.toString(16);
|
|
38
|
+
str = str.length === 0 ? '00' : str.length === 1 ? '0' + str : str;
|
|
39
|
+
result += str;
|
|
40
|
+
}
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function BytesToHex(bytes: Uint8Array | ArrayBuffer | ArrayLike<number>) {
|
|
45
|
+
return byteArrayToHex(bytes);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function reverseHex(hex: string): string {
|
|
49
|
+
let out = '';
|
|
50
|
+
for (let i = hex.length - 2; i >= 0; i -= 2) {
|
|
51
|
+
out += hex.substr(i, 2);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function getDifficulty(transactionHash: string) {
|
|
57
|
+
let bytes = hexStringToBytes(transactionHash).reverse();
|
|
58
|
+
let result = 0;
|
|
59
|
+
|
|
60
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
61
|
+
var n = bytes[i];
|
|
62
|
+
for (let j = 0; j < 8; j++) {
|
|
63
|
+
if ((bytes[i] & (1 << j)) != 0) {
|
|
64
|
+
result = 1 + (i << 3) + j;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return 256 - result;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function decodeBase16(hex: string) {
|
|
73
|
+
let str = '';
|
|
74
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
75
|
+
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
|
|
76
|
+
}
|
|
77
|
+
return str;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function encodeBase16(str: string) {
|
|
81
|
+
return str
|
|
82
|
+
.split('')
|
|
83
|
+
.map((c) => c.charCodeAt(0).toString(16).padStart(2, '0'))
|
|
84
|
+
.join('')
|
|
85
|
+
.toUpperCase();
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function uint8ArrayToString(array: Uint8Array): string {
|
|
89
|
+
let result = '';
|
|
90
|
+
for (let i = 0; i < array.length; i++) {
|
|
91
|
+
result += String.fromCharCode(array[i]);
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function uint8ArrayToStringDefault(array: Uint8Array): string {
|
|
97
|
+
let result = '';
|
|
98
|
+
for (let i = 0; i < array.length; i++) {
|
|
99
|
+
result += array[i].toString(16);
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export function uint8ArrayToNumberArray(array: Uint8Array): number[] {
|
|
105
|
+
let result = [];
|
|
106
|
+
for (let i = 0; i < array.length; i++) {
|
|
107
|
+
result.push(array[i]);
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export function stringToUint8Array(str: string): Uint8Array {
|
|
113
|
+
let result = new Uint8Array(str.length);
|
|
114
|
+
for (let i = 0; i < str.length; i++) {
|
|
115
|
+
result[i] = str.charCodeAt(i);
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export function hexStringToUint8Array(str: string): Uint8Array {
|
|
121
|
+
let result = new Uint8Array(str.length);
|
|
122
|
+
for (let i = 0; i < str.length; i++) {
|
|
123
|
+
result[i] = str.charCodeAt(i).toString(16).charCodeAt(0);
|
|
124
|
+
}
|
|
125
|
+
return result;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export function arrayNumberToUint8Array(arr: number[]): Uint8Array {
|
|
129
|
+
let result = new Uint8Array(arr.length);
|
|
130
|
+
for (let i = 0; i < arr.length; i++) {
|
|
131
|
+
result[i] = arr[i];
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function uint8ArrayToBytes(array: Uint8Array): number[] {
|
|
137
|
+
let result = [];
|
|
138
|
+
for (let i = 0; i < array.length; i++) {
|
|
139
|
+
result.push(array[i]);
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export function uint8ArrayToHex(arr: Uint8Array): string {
|
|
145
|
+
let hexString = '';
|
|
146
|
+
for (let i = 0; i < arr.length; i++) {
|
|
147
|
+
hexString += arr[i].toString(16).padStart(2, '0');
|
|
148
|
+
}
|
|
149
|
+
return hexString;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export function numberToByteArray(num: number, size?: number): Uint8Array {
|
|
153
|
+
if (size === undefined) {
|
|
154
|
+
if (num < 0xfd) {
|
|
155
|
+
size = 1;
|
|
156
|
+
} else if (num <= 0xfffd) {
|
|
157
|
+
size = 2;
|
|
158
|
+
} else if (num <= 0xffffd) {
|
|
159
|
+
size = 3;
|
|
160
|
+
} else if (num <= 0xfffffffd) {
|
|
161
|
+
size = 4;
|
|
162
|
+
} else if (num <= 0xffffffff) {
|
|
163
|
+
size = 5;
|
|
164
|
+
} else if (num <= 0xffffffffffffffff) {
|
|
165
|
+
size = 9;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
var bytes = new Uint8Array(size);
|
|
169
|
+
|
|
170
|
+
var i = 0;
|
|
171
|
+
do {
|
|
172
|
+
bytes[i++] = num & 0xff;
|
|
173
|
+
num = num >> 8;
|
|
174
|
+
} while (num);
|
|
175
|
+
return bytes;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export function bigIntToByteArray(bigint: bigint): Uint8Array {
|
|
179
|
+
// Get a big-endian byte representation of the bigint
|
|
180
|
+
var bytes = bigint.toString(16).padStart(64, '0');
|
|
181
|
+
var byteArray = new Uint8Array(bytes.length / 2);
|
|
182
|
+
for (var i = 0; i < bytes.length; i += 2) {
|
|
183
|
+
byteArray[i / 2] = parseInt(bytes.substring(i, i + 2), 16);
|
|
184
|
+
}
|
|
185
|
+
return byteArray;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export const hex2ascii = (hexx) => {
|
|
189
|
+
const hex = hexx.toString();
|
|
190
|
+
let str = '';
|
|
191
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
192
|
+
const char = hex.substr(i, 2);
|
|
193
|
+
const charCode = String.fromCharCode(parseInt(char, 16));
|
|
194
|
+
// console.log('char', char, 'charCode', charCode);
|
|
195
|
+
str += charCode;
|
|
196
|
+
}
|
|
197
|
+
return str;
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
export const Int2Buffer = (i: number): Buffer => {
|
|
201
|
+
let hex = i.toString(16).toUpperCase();
|
|
202
|
+
if (hex.length % 2 === 1) {
|
|
203
|
+
hex = '0' + hex;
|
|
204
|
+
}
|
|
205
|
+
return Buffer.from(hex, 'hex');
|
|
206
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
export enum Contracts {
|
|
3
|
+
GasContractName = "gas",
|
|
4
|
+
BlockContractName = "block",
|
|
5
|
+
StakeContractName = "stake",
|
|
6
|
+
SwapContractName = "swap",
|
|
7
|
+
AccountContractName = "account",
|
|
8
|
+
ConsensusContractName = "consensus",
|
|
9
|
+
GovernanceContractName = "governance",
|
|
10
|
+
StorageContractName = "storage",
|
|
11
|
+
ValidatorContractName = "validator",
|
|
12
|
+
InteropContractName = "interop",
|
|
13
|
+
ExchangeContractName = "exchange",
|
|
14
|
+
PrivacyContractName = "privacy",
|
|
15
|
+
RelayContractName = "relay",
|
|
16
|
+
RankingContractName = "ranking"
|
|
17
|
+
}
|