{"_id":"@alchemy_chain/js-sdk","_rev":"2-0ee2b7e00921b44876e955573f50a245","name":"@alchemy_chain/js-sdk","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@alchemy_chain/js-sdk","version":"1.0.0","keywords":["alchemy-chain","sdk","javascript","token","blockchain","ethereum","crypto","web3","defi","api"],"author":{"name":"您的名字","email":"your.email@example.com"},"license":"MIT","_id":"@alchemy_chain/js-sdk@1.0.0","maintainers":[{"name":"aeon_project","email":"code@alchemypay.org"}],"homepage":"https://github.com/alchemy-chain/js-sdk#readme","bugs":{"url":"https://github.com/alchemy-chain/js-sdk/issues"},"dist":{"shasum":"80c433522270ce43d94f9d259257ce50df20f67a","tarball":"https://registry.npmjs.org/@alchemy_chain/js-sdk/-/js-sdk-1.0.0.tgz","fileCount":3,"integrity":"sha512-d3TcHpwUowCi6kjayYgosCfw/SoQ/XlXE8pFLOC10AYJisUA+14/83Xb1Gvi94Y+9KtLNoViNFAQlxXGBOqIOw==","signatures":[{"sig":"MEQCIFngTrIv6gvG+3y9R7yF2rDIQjCsfg5De6sj7Nng/tg0AiB1F082njgvZBWoVGtY23EgLjt7yZhaQsQfOcdazK3kfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12336},"main":"index.js","engines":{"node":">=14.0.0"},"scripts":{"test":"node example.js"},"_npmUser":{"name":"aeon_project","email":"code@alchemypay.org"},"repository":{"url":"git+https://github.com/alchemy-chain/js-sdk.git","type":"git"},"_npmVersion":"10.9.3","description":"Alchemy Chain JavaScript SDK - 简化的代币API工具库，用于与区块链进行代币操作交互","directories":{},"_nodeVersion":"22.19.0","dependencies":{"ethers":"^6.15.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/js-sdk_1.0.0_1764063050428_0.4031212949958167","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alchemy_chain/js-sdk","version":"1.0.1","description":"Alchemy Chain JavaScript SDK - A simplified token API toolkit for blockchain token operations and interactions","main":"index.js","keywords":["alchemy-chain","sdk","javascript","token","blockchain","ethereum","crypto","web3","defi","api"],"scripts":{"test":"node example.js"},"dependencies":{"ethers":"^6.15.0"},"repository":{"type":"git","url":"git+https://github.com/alchemy-chain/js-sdk.git"},"bugs":{"url":"https://github.com/alchemy-chain/js-sdk/issues"},"homepage":"https://github.com/alchemy-chain/js-sdk#readme","author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","engines":{"node":">=14.0.0"},"_id":"@alchemy_chain/js-sdk@1.0.1","gitHead":"e73f9dde015dc1630e2500dfbce32433354cc56b","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-bM71sS7SeOeraJuTom+k8ZM15e0E2IfwQGSMObjO6OWU0boq0vCDSMaagsLIDgX/BFrvQ48GuL6ULuavFtXgPw==","shasum":"effc96b2f4e1656af34c2b7f33069621a79ef18d","tarball":"https://registry.npmjs.org/@alchemy_chain/js-sdk/-/js-sdk-1.0.1.tgz","fileCount":3,"unpackedSize":14921,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCg3YbdVltY3q5yASVYrobdrX/N8RQNB06BJkHsFK4IgQIgcJzRJLAHr/JSVzh04UFMEbgW+s7Lrdnzntui2RzVeCg="}]},"_npmUser":{"name":"aeon_project","email":"code@alchemypay.org"},"directories":{},"maintainers":[{"name":"aeon_project","email":"code@alchemypay.org"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/js-sdk_1.0.1_1764235685903_0.7656899397916059"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-25T09:30:50.281Z","modified":"2025-11-27T09:28:06.322Z","1.0.0":"2025-11-25T09:30:50.623Z","1.0.1":"2025-11-27T09:28:06.087Z"},"bugs":{"url":"https://github.com/alchemy-chain/js-sdk/issues"},"author":{"name":"Your Name","email":"your.email@example.com"},"license":"MIT","homepage":"https://github.com/alchemy-chain/js-sdk#readme","keywords":["alchemy-chain","sdk","javascript","token","blockchain","ethereum","crypto","web3","defi","api"],"repository":{"type":"git","url":"git+https://github.com/alchemy-chain/js-sdk.git"},"description":"Alchemy Chain JavaScript SDK - A simplified token API toolkit for blockchain token operations and interactions","maintainers":[{"name":"aeon_project","email":"code@alchemypay.org"}],"readme":"# @alchemy_chain/js-sdk\r\n\r\nAlchemy Chain JavaScript SDK - A simplified token API toolkit for blockchain token operations and interactions.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @alchemy_chain/js-sdk\r\n```\r\n\r\n## Quick Start\r\n\r\n```javascript\r\nconst AlchemySDK = require('@alchemy_chain/js-sdk');\r\n\r\n// Configure RPC endpoint and private key\r\nAlchemySDK.Config('https://your-rpc-endpoint.com', 'your-private-key');\r\n\r\n// Create token\r\nconst result = await AlchemySDK.CreateToken('My Token', 'MTK', 18, '0x...masterAuthority');\r\nresult.success(data => {\r\n    console.log('Token address:', data.token);\r\n    console.log('Transaction hash:', data.hash);\r\n}).error(err => {\r\n    console.error('Creation failed:', err);\r\n});\r\n```\r\n\r\n## API Documentation\r\n\r\n### Configuration\r\n\r\n#### `Config(rpcUrl, privateKey)`\r\n\r\nConfigure RPC endpoint and private key.\r\n\r\n- `rpcUrl`: RPC endpoint URL\r\n- `privateKey`: Private key for signing (can include or exclude 0x prefix)\r\n\r\n### Token Operations\r\n\r\n#### `CreateToken(name, symbol, decimals, masterAuthority)`\r\n\r\nCreate a new token.\r\n\r\n- `name`: Token name\r\n- `symbol`: Token symbol\r\n- `decimals`: Number of decimal places\r\n- `masterAuthority`: Master authority address\r\n\r\n**Returns**: Promise with `.success()` and `.error()` methods.\r\n\r\n#### `GetTokenMetadata(tokenAddress)`\r\n\r\nGet token metadata.\r\n\r\n- `tokenAddress`: Token contract address\r\n\r\n#### `UpdateMetadata(tokenAddress, newName, newSymbol, nonce)`\r\n\r\nUpdate token metadata.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `newName`: New token name\r\n- `newSymbol`: New token symbol\r\n- `nonce`: Transaction nonce value\r\n\r\n#### `Mint(tokenAddress, toAddress, amount, nonce)`\r\n\r\nMint tokens.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `toAddress`: Recipient address\r\n- `amount`: Amount to mint (wei value as string)\r\n- `nonce`: Transaction nonce value\r\n\r\n#### `AdminBurn(tokenAddress, fromAddress, amount, nonce)`\r\n\r\nAdmin burn tokens.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `fromAddress`: Address to burn tokens from\r\n- `amount`: Amount to burn (wei value as string)\r\n- `nonce`: Transaction nonce value\r\n\r\n### Authority Management\r\n\r\n#### `GrantAuthority(tokenAddress, role, account, nonce)`\r\n\r\nGrant authority.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `role`: Authority role (e.g. 'MINT_ROLE')\r\n- `account`: Account address to be granted authority\r\n- `nonce`: Transaction nonce value\r\n\r\n#### `RevokeAuthority(tokenAddress, role, account, nonce)`\r\n\r\nRevoke authority.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `role`: Authority role\r\n- `account`: Account address to revoke authority from\r\n- `nonce`: Transaction nonce value\r\n\r\n### Contract Control\r\n\r\n#### `Pause(tokenAddress, nonce)`\r\n\r\nPause contract.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `nonce`: Transaction nonce value\r\n\r\n#### `Unpause(tokenAddress, nonce)`\r\n\r\nUnpause contract.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `nonce`: Transaction nonce value\r\n\r\n#### `AddToBlacklist(tokenAddress, accountAddress, nonce)`\r\n\r\nAdd account to blacklist.\r\n\r\n- `tokenAddress`: Token contract address\r\n- `accountAddress`: Account address to add to blacklist\r\n- `nonce`: Transaction nonce value\r\n\r\n### Utility Methods\r\n\r\n#### `GetBalance(address)`\r\n\r\nGet ETH balance.\r\n\r\n- `address`: Address to query\r\n\r\n**Returns**: Promise that returns an object with `wei` and `eth` fields on success.\r\n\r\n## Technical Details\r\n\r\n### Enhanced Signature Verification\r\n\r\nThe SDK implements a robust signature system with the following improvements:\r\n\r\n- **Null Safety**: Automatically handles and filters null/undefined values using strict null checks (`value == null`)\r\n- **Array Support**: Properly processes array parameters by:\r\n  - Filtering out null/undefined array elements\r\n  - Flattening arrays into individual values using spread operator\r\n  - Including all non-null elements in signature\r\n- **Method Security**: For token operations, method arguments are included in signature verification\r\n- **Parameter Ordering**: All parameters are sorted alphabetically for consistent signature generation\r\n- **String Conversion**: All parameter values are converted to strings before joining\r\n- **Comma Separation**: Message parts are joined with commas for hash generation\r\n\r\n### Signature Fields\r\n\r\n#### CreateToken Operations\r\nParameters included in signature:\r\n- `decimals`, `masterAuthority`, `name`, `nonce`, `recentCheckpoint`, `symbol`\r\n\r\nRequest parameters sent to server:\r\n- `decimals`, `masterAuthority`, `name`, `symbol`, `nonce`, `recentCheckpoint`, `signature`\r\n\r\n#### Dynamic Method Calls  \r\nParameters included in signature:\r\n- `recentCheckpoint`, `nonce`, `methodArgs`, `token`\r\n\r\nRequest parameters sent to server:\r\n- `nonce`, `token`, `methodArgs`, `recentCheckpoint`, `signature`\r\n\r\nNote: The `methodArgs` field is now part of signature verification for enhanced security.\r\n\r\n## Examples\r\n\r\n```javascript\r\nconst AlchemySDK = require('@alchemy_chain/js-sdk');\r\n\r\nasync function main() {\r\n    // Configuration\r\n    AlchemySDK.Config('https://validator-node-rpc.aeon.xyz', 'your-private-key');\r\n\r\n    // Create token\r\n    const createResult = await AlchemySDK.CreateToken('My Token', 'MTK', 8, '0x...');\r\n    createResult.success(async response => {\r\n        const tokenAddress = response.token;\r\n        console.log('Token created successfully:', tokenAddress);\r\n\r\n        // Get token information\r\n        const metadataResult = await AlchemySDK.GetTokenMetadata(tokenAddress);\r\n        metadataResult.success(metadata => {\r\n            console.log('Token name:', metadata.name);\r\n            console.log('Token symbol:', metadata.symbol);\r\n        });\r\n\r\n        // Mint tokens\r\n        const mintResult = await AlchemySDK.Mint(tokenAddress, '0x...', '1000000000000000000', 1);\r\n        mintResult.success(response => {\r\n            console.log('Mint successful:', response.hash);\r\n        });\r\n    }).error(err => {\r\n        console.error('Creation failed:', err);\r\n    });\r\n}\r\n\r\nmain().catch(console.error);\r\n```\r\n\r\n## Important Notes\r\n\r\n1. **Private Key Security**: Please keep your private key secure and do not hardcode it in your code\r\n2. **Nonce Management**: Ensure you use the correct nonce value when calling methods that require nonce\r\n3. **Network Configuration**: Make sure the RPC endpoint is accessible and compatible\r\n4. **Error Handling**: It's recommended to add appropriate error handling for all operations\r\n5. **Signature Security**: Method arguments are now included in signature verification - ensure parameters are correct\r\n6. **Null Parameter Handling**: The SDK automatically filters null/undefined values (`== null` check), so undefined parameters won't break signatures\r\n7. **Array Parameters**: When using array parameters, null elements are automatically filtered out and arrays are flattened\r\n8. **Parameter Format**: CreateToken uses camelCase parameters (masterAuthority, recentCheckpoint) in both signature and request\r\n9. **String Conversion**: All parameter values are automatically converted to strings during signature generation\r\n\r\n## License\r\n\r\nMIT\r\n\r\n## Contributing\r\n\r\nIssues and pull requests are welcome!","readmeFilename":"README.md"}