@traittech/txwrapper
v0.0.6
Published
Universal offline transaction library for Trevo blockchain
Readme
@trevo-finance/txwrapper
Universal offline transaction library for Substrate-based blockchains. Supports both QR code and mnemonic-based signing.
Features
- 🔒 Offline transaction creation - Create transactions without API connection
- 📱 QR code support - Generate and parse QR codes for transaction signing
- 🔑 Mnemonic support - Sign transactions using mnemonic phrases
- 🛠️ Extensible - Easy to add new transaction types
- 📦 Type-safe - Full TypeScript support
- 🏗️ Modular architecture - Core, QR, and method helpers
Installation
npm install @trevo-finance/txwrapperProject Structure
@trevo-finance/txwrapper/
├── src/
│ ├── core/ # Основные функции
│ │ ├── builder.ts # createRpcInfo, createSigningPayloadHex
│ │ ├── signer.ts # addSignature
│ │ └── types.ts # IRPCInfo, BuildInfo
│ ├── methods/ # Методы транзакций
│ │ └── transactions/
│ │ ├── balances.ts # Переводы балансов
│ │ ├── assets.ts # Переводы активов
│ │ └── nfts.ts # Переводы NFT
│ ├── qr/ # QR-коды и подписи
│ │ ├── payload.ts # prepareQrPayload
│ │ └── parser.ts # parseSignature
│ └── utils/ # Утилиты
│ └── conversion.ts # toPlanck, fromPlanck
└── dist/ # Собранные файлы
├── esm/ # ES Modules
├── cjs/ # CommonJS
└── examples/ # Примеры использованияQuick Start
Basic Usage
import { createRpcInfo, createPayloadU8aFromRpc, addSignature } from '@trevo-finance/txwrapper'
// Create RPC info from blockchain data
const rpcInfo = createRpcInfo({
chain_name: 'polkadot',
runtime_spec_name: 'polkadot',
runtime_spec_version: 1000,
// ... other blockchain data
})
// Create transaction (implementation depends on transaction type)
// const unsignedTx = createTransferTransaction(rpcInfo, params)
// Get payload for signing
const payloadU8a = createPayloadU8aFromRpc(unsignedTx, rpcInfo)
// After getting signature from QR or mnemonic
const signedTx = addSignature(unsignedTx, signature, rpcInfo.registry)QR Code Signing
import { prepareQrPayload, parseSignature } from '@trevo-finance/txwrapper'
// Prepare QR payload
const qrPayload = prepareQrPayload(
senderAddress,
genesisHash,
payloadU8a,
{ forceFullPayload: true }
)
// Display QR code using qrPayload.payload and qrPayload.cmd
// Parse signature from scanned QR
const signature = parseSignature(scannedData)Creating Custom Transaction Types
import { defineMethod, createMethodDefinition } from '@trevo-finance/txwrapper'
// Define a custom transaction method
const transferMethod = createMethodDefinition('userTransactions', 'submitTransferBalances', {
dest: 'recipient_address',
value: 1000000
})
// Create unsigned transaction
const unsignedTx = defineMethod({
method: transferMethod,
...baseTxInfo
}, options)API Reference
Core Functions
createRpcInfo(buildInfo)- Create RPC info from blockchain datacreatePayloadU8aFromRpc(unsignedTx, rpcInfo)- Create payload for signingaddSignature(unsignedTx, signature, registry)- Add signature to transaction
QR Functions
prepareQrPayload(address, genesisHash, payload, options)- Prepare QR payloadparseSignature(rawData)- Parse signature from QR scanvalidateSignature(signature)- Validate signature formatgetQrPayloadDebugInfo(qrPayload)- Get debug information for QR payload
Method Helpers
defineMethod(methodDefinition, options)- Define a transaction methodcreateMethodDefinition(pallet, method, args)- Helper to create method definition
Types
IRPCInfo- RPC information interfaceBuildInfo- Blockchain build informationQrPayload- QR payload structureQrOptions- QR preparation options
Transaction Types
The library supports various transaction types through extensible method definitions:
- Transfer balances
- Transfer assets
- Transfer NFTs
- Custom pallet methods
Adding New Transaction Types
To add a new transaction type, create a method definition using the helpers:
import { defineMethod, createMethodDefinition } from '@trevo-finance/txwrapper'
export function createMyCustomTransaction(args: MyArgs, info: BaseTxInfo, options: OptionsWithMeta) {
const methodDef = createMethodDefinition('myPallet', 'myMethod', args)
return defineMethod({
method: methodDef,
...info
}, options)
}📚 Examples
See the examples/ directory for complete working examples:
- Balance transfers - Basic and with origin proof
- Asset transfers - Transfer custom assets
- NFT transfers - Transfer non-fungible tokens
- Transaction signing - Sign transactions with various methods
import { createBalanceTransferExample } from '@trevo-finance/txwrapper/examples/transactions'Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
MIT License - see the LICENSE file for details.
