Last active
November 11, 2020 05:10
-
-
Save anonymoussprocket/380e11bd67aa8d0ee158c1877a5f4090 to your computer and use it in GitHub Desktop.
TZIP-7/FA1.2 token sample #87651
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import fetch from 'node-fetch'; | |
import * as log from 'loglevel'; | |
import { registerFetch, registerLogger } from 'conseiljs'; | |
import { KeyStore, TezosConseilClient, TezosMessageUtils, TezosNodeReader, OperationKindType, TezosNodeWriter, TezosParameterFormat, Signer, TezosContractIntrospector, Tzip7ReferenceTokenHelper } from 'conseiljs'; | |
import { KeyStoreUtils, SoftSigner } from 'conseiljs-softsigner'; | |
const tezosNode = 'TEZOS NODE'; | |
const conseilServer = { url: 'CONSEIL SERVICE', apiKey: 'APIKEY FROM nautilus.cloud', network: 'carthagenet' }; | |
const networkBlockTime = 30 + 1; | |
let accounts = ['tz1aTPZXhAmKmisY2iRe6dEhxwe7Db3cPoVc', 'tz1esJd77NiytsZu5M73kHY9hCZf2jhxCf93', 'tz1TeLvXDXAVu4QUsz5TxtQQ73APgQd8vGUv']; | |
let actors = { admin: {} as KeyStore, usera: {} as KeyStore, userb: {} as KeyStore, userc: {} as KeyStore }; | |
let contractAddress = 'KT1XRdGrCkcWiiNcAb8jnbV8zyNctf62N1N1'; | |
let contractMap = 10101; | |
function clearRPCOperationGroupHash(hash: string) { | |
return hash.replace(/\"/g, '').replace(/\n/, ''); | |
} | |
async function statOperation(groupid: string){ | |
const result = await TezosConseilClient.awaitOperationConfirmation(conseilServer, conseilServer.network, groupid, 7, networkBlockTime); | |
if (result['status'] === 'failed') { | |
console.log(`${result['kind']} ${groupid} ${result['status']} at block ${result['block_level']}`); | |
} else if (result['status'] === 'applied') { | |
let message = `${result['kind']} ${groupid} included in block ${result['block_level']} for ${result['consumed_gas']}g and ${result['paid_storage_size_diff']}f` | |
if ('originated_contracts' in result && result['originated_contracts'] != null && result['originated_contracts'].length > 0) { | |
message += ` new contract at ${result['originated_contracts']}`; | |
} | |
console.log(message); | |
} else { | |
console.log(JSON.stringify(result)); | |
} | |
} | |
function init(){ | |
const logger = log.getLogger('conseiljs'); | |
logger.setLevel('debug', false); | |
registerLogger(logger); | |
registerFetch(fetch); | |
} | |
async function loadAccounts() { | |
console.log('~~ loadAccounts'); | |
actors.admin = await KeyStoreUtils.restoreIdentityFromSecretKey('edskS4t6wC6eCSzVmfpwPAaABCAPYVZ7g3cVRYyqdY9hHSbBviav1gbMgFHZPW6ftFd1gY5nN2PyfabeY8dm4pDTmqVyDt49Cx'); | |
actors.usera = await KeyStoreUtils.restoreIdentityFromSecretKey('edskS6T1fDhAXYZyJzTSXTBigT1yAsqBZmmMorQfhsuybW2DCi4SJkTSR9GyrTstDerVeUnTP6ZZoAGW7fCV8nJK9jbrYiK7iH'); | |
actors.userb = await KeyStoreUtils.restoreIdentityFromSecretKey('edskSB9Pds3oqtiUfsS5fADJRWAVeQQSggkyvwJunrVBPZhTFnHi1dAgmjn1XkxfCcqLwpnhQFe2wcxpXdHheVGaSvt2Bf4m38'); | |
} | |
async function queryContractMap(mapid: number, key: string, type: string = 'string') { | |
const packedKey = TezosMessageUtils.encodeBigMapKey(Buffer.from(TezosMessageUtils.writePackedData(key, type), 'hex')); | |
const mapResult = await TezosNodeReader.getValueForBigMapKey(tezosNode, mapid, packedKey); | |
console.log(`value: ${JSON.stringify(mapResult)}`); | |
} | |
async function run() { | |
await loadAccounts(); | |
let operationGroupID = ''; | |
let keyStore = actors.admin; | |
console.log(`actor "${keyStore.publicKeyHash}"`); | |
let signer: Signer = await SoftSigner.createSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk')); | |
//operationGroupID = await Tzip7ReferenceTokenHelper.deployContract(tezosNode, signer, keyStore, 500_000, keyStore.publicKeyHash); | |
//console.log(`deploy: ${operationGroupID}`); // ooogdgMbGtXYxvzo3SRHQ33GRMKKwcn4eif8zpq9woxcL4BT1X2 | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); | |
console.log(`contract: ${contractAddress}`); | |
console.log(`contract map: ${contractMap}`); | |
//operationGroupID = await Tzip7ReferenceTokenHelper.mint(tezosNode, signer, keyStore, contractAddress, 500_000, actors.usera.publicKeyHash, 10_000_000); | |
//console.log(`mint to ${actors.usera.publicKeyHash}: ${operationGroupID}`); | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); //op7zAnu5z16haMX1nvnyLzyMHKrysE5iKjh62ed4XWvY9EhLM15 | |
//operationGroupID = await Tzip7ReferenceTokenHelper.activateLedger(tezosNode, signer, keyStore, contractAddress, 500_000, 250_000, 3_000); | |
//console.log(`activate: ${operationGroupID}`); | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); //opWXvDLKw7Z7hQQacNSgty9Wt4NfcnUSVBTWboCm9ETJMaYMhHz | |
//keyStore = actors.usera; | |
//console.log(`actor "${keyStore.publicKeyHash}"`); | |
//signer = await SoftSigner.createSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk')); | |
//operationGroupID = await Tzip7ReferenceTokenHelper.transferBalance(tezosNode, signer, keyStore, contractAddress, 500_000, keyStore.publicKeyHash, 'tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb', 1_000_000, 250_000, 3_000); | |
//console.log(`transfer from ${keyStore.publicKeyHash} to tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb: ${operationGroupID}`); | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); //oo42D1bkw5CbvarP9YK4YskfVLf6hingKtkKzvyqNLLjJpmPjCJ | |
//keyStore = actors.usera; | |
//console.log(`actor "${keyStore.publicKeyHash}"`); | |
//signer = await SoftSigner.createSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk')); | |
//operationGroupID = await Tzip7ReferenceTokenHelper.approveBalance(tezosNode, signer, keyStore, contractAddress, 500_000, 'tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb', 1_000_000, 250_000, 3_000); | |
//console.log(`approveBalance from ${keyStore.publicKeyHash} to tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb: ${operationGroupID}`); | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); //oo6wRN62iejBYxPfeqQu7FJAZjQPUwje2DtcN4DNto1EQSwNNzk | |
//keyStore = actors.usera; | |
//console.log(`actor "${keyStore.publicKeyHash}"`); | |
//signer = await SoftSigner.createSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk')); | |
//operationGroupID = await Tzip7ReferenceTokenHelper.approveBalance(tezosNode, signer, keyStore, contractAddress, 500_000, actors.userb.publicKeyHash, 1_000_000, 250_000, 3_000); | |
//console.log(`approveBalance from ${keyStore.publicKeyHash} to ${actors.userb.publicKeyHash}: ${operationGroupID}`); | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); //opNnkHXi1MuvXCBPRpuPuAMgSZDSYVbofpNRA1K7wiwwiiFvCPP | |
//keyStore = actors.userb; | |
//console.log(`actor "${keyStore.publicKeyHash}"`); | |
//signer = await SoftSigner.createSigner(TezosMessageUtils.writeKeyWithHint(keyStore.secretKey, 'edsk')); | |
//operationGroupID = await Tzip7ReferenceTokenHelper.transferBalance(tezosNode, signer, keyStore, contractAddress, 500_000, actors.usera.publicKeyHash, keyStore.publicKeyHash, 1_000_000, 250_000, 3_000); | |
//console.log(`claim from ${actors.usera.publicKeyHash} to ${keyStore.publicKeyHash}: ${operationGroupID}`); | |
//statOperation(clearRPCOperationGroupHash(operationGroupID)); //onhgUxJu95RXFStpA8EzgdDZNGHw4PQVGb8rue2dn2hbX2ndA7H | |
console.log(`contract storage:\n${JSON.stringify(await Tzip7ReferenceTokenHelper.getSimpleStorage(tezosNode, contractAddress), null, 2)}`); | |
/* | |
{ | |
"mapid": 10101, | |
"supply": 10000000, | |
"administrator": "tz1aTPZXhAmKmisY2iRe6dEhxwe7Db3cPoVc", | |
"paused": false | |
} | |
*/ | |
console.log(`balance for ${actors.usera.publicKeyHash}: ${await Tzip7ReferenceTokenHelper.getAccountBalance(tezosNode, contractMap, actors.usera.publicKeyHash)}`); | |
//8000000 | |
console.log(`balance for ${actors.userb.publicKeyHash}: ${await Tzip7ReferenceTokenHelper.getAccountBalance(tezosNode, contractMap, actors.userb.publicKeyHash)}`); | |
//1000000 | |
console.log(`balance for tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb: ${await Tzip7ReferenceTokenHelper.getAccountBalance(tezosNode, contractMap, 'tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb')}`); | |
//1000000 | |
console.log(`allowance for tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb from ${actors.usera.publicKeyHash}: ${await Tzip7ReferenceTokenHelper.getAccountAllowance(tezosNode, contractMap, 'tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb', actors.usera.publicKeyHash)}`); | |
//1000000 | |
} | |
init(); | |
run(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "fa12-token-example", | |
"version": "0.0.1", | |
"description": "TZIP-7/FA1.2 token example script", | |
"scripts": { | |
"postinstall": "npm run build", | |
"build": "tsc index.ts", | |
"start": "node index.js" | |
}, | |
"license": "UNLICENSED", | |
"engines": { | |
"node": ">=12.13.x", | |
"npm": ">=6.13.x" | |
}, | |
"homepage": "https://gist.github.com/anonymoussprocket", | |
"dependencies": { | |
"conseiljs": "5.0.5", | |
"conseiljs-softsigner": "5.0.3 | |
"loglevel": "1.6.8", | |
"node-fetch": "2.6.0" | |
}, | |
"devDependencies": { | |
"typescript": "3.8.3" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment