123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /* Import modules. */
- // import { sha256 } from '@nexajs/crypto'
- // import { encodePrivateKeyWif } from '@nexajs/hdnode'
- import { encodeAddress } from '@nexajs/address'
- // import { sha256 } from '@nexajs/crypto'
- import {
- getCoins,
- sendCoins,
- } from '@nexajs/purse'
- import {
- encodeDataPush,
- encodeNullData,
- OP,
- } from '@nexajs/script'
- import {
- getTokens,
- sendToken,
- } from '@nexajs/token'
- // const TOKEN_ID_HEX = '57f46c1766dc0087b207acde1b3372e9f90b18c7e67242657344dcd2af660000' // AVAS
- const TOKEN_ID_HEX = '9732745682001b06e332b6a4a0dd0fffc4837c707567f8cbfe0f6a9b12080000' // STUDIO
- export default async function (_receivers) {
- /* Initialize locals. */
- let body
- let coins
- let nexaAddress
- let nullData
- // let publicKey
- let publicKeyHash
- let receivers
- let response
- let scriptPubKey
- // let scriptPushPubKey
- let tokens
- let txResult
- let userData
- // let wif
- console.info('\n Nexa address:', this.address)
- coins = await getCoins(this.wif)
- .catch(err => console.error(err))
- console.log('\n Coins:', coins)
- tokens = await getTokens(this.wif)
- .catch(err => console.error(err))
- console.log('\n Tokens:', tokens)
- /* Filter tokens. */
- // NOTE: Currently limited to a "single" Id.
- tokens = tokens.filter(_token => {
- return _token.tokenidHex === TOKEN_ID_HEX
- })
- console.log('\n Tokens (filtered):', tokens)
- userData = [
- 'RAIN',
- `$STUDIO Telegram Airdrop`,
- ]
- /* Initialize hex data. */
- nullData = encodeNullData(userData)
- receivers = [
- {
- data: nullData,
- },
- ]
- _receivers.forEach(_receiver => {
- receivers.push( {
- address: _receiver.address,
- tokenid: TOKEN_ID_HEX, // TODO Allow auto-format conversion.
- tokens: BigInt(_receiver.tokens),
- },
- )
- })
- receivers.push({
- address: this.address,
- })
- console.log('\n Receivers:', receivers)
- // return
- /* Send UTXO request. */
- response = await sendToken(coins, tokens, receivers)
- console.log('Send UTXO (response):', response)
- try {
- txResult = JSON.parse(response)
- console.log('TX RESULT', txResult)
- if (txResult.error) {
- console.error(txResult.error)
- }
- } catch (err) {
- console.error(err)
- }
- return txResult
- }
|