Skip to content

Nft form #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions api/chains.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
var chains = {
'RICK': {
isV2: false,
params: '-ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=138.201.136.145 -addnode=95.217.44.58',
},
'WSB': {
isV2: false,
params: '-ac_supply=90000000000 -ac_cc=3 -ac_reward=100000000 -addnode=94.130.38.173 -addnode=178.63.47.105',
},
'TOKENSV2': {
NFT: true,
params: '-ac_supply=10000000 -ac_reward=1000000000 -ac_decay=77700000 -ac_halving=43800 -ac_cc=1 -ac_ccenable=227,224,245,243,228,242,123,247 -addnode=159.69.53.25',
},
'TKLTEST': {
NFT: true,
isV2: true,
params: '-ac_supply=1000000000 -ac_reward=10000000000 -ac_decay=77700000 -ac_halving=525600 -ac_cc=1 -ac_ccenable=224,243,245,246,247,228 -addnode=51.38.124.215 -addnode=94.130.38.173',
},
};

module.exports = chains;
121 changes: 93 additions & 28 deletions api/daemon.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,40 @@ const platform = os.platform()
const path = require('path');
const fixPath = require('fix-path');

const chains = require('./chains');

let default_config;

if (process.argv.indexOf('chain=rick') > -1) {
default_config = {
bin_folder: getBinsFolder(),
chain_name: 'RICK',
coin_name: 'RICK',
chain_launch_params: '-ac_supply=90000000000 -ac_reward=100000000 -ac_cc=3 -ac_staked=10 -addnode=138.201.136.145 -addnode=95.217.44.58 -printtoconsole'
chain_launch_params: chains.RICK.params + ' -printtoconsole'
}
} else {
default_config = {
bin_folder: getBinsFolder(),
chain_name: 'WSB',
coin_name: 'WSB',
chain_launch_params: '-ac_supply=90000000000 -ac_cc=3 -ac_reward=100000000 -addnode=94.130.38.173 -addnode=178.63.47.105 -printtoconsole'
chain_launch_params: chains.WSB.params + ' -printtoconsole'
}
}

function setChain(chain) {
default_config = {
bin_folder: getBinsFolder(),
chain_name: chain,
coin_name: chain,
chain_launch_params: chains[chain].params + ' -printtoconsole'
};

config.coin_name = chain;

console.warn('setChain config', default_config);
readConfig();
}

// Data
let komodod_path = undefined
let cli_path = undefined
Expand All @@ -43,7 +59,7 @@ function to_cli_args(command) {
function readConfig() {
// Set default
config = { ...default_config }

// FIXME
const config_path = getKomodoFolder() + 'gui_config.json'
try {
let data = JSON.parse(fs.readFileSync(config_path))
Expand Down Expand Up @@ -86,6 +102,7 @@ function forceImportKey(keypair) {
getAddressFromPubkey(keypair.pubkey).then(addr_info => {
keypair.address = addr_info.address
keypair.CCaddress = addr_info.CCaddress
keypair.pubkey = keypair.pubkey

resolve({
generated: false,
Expand All @@ -105,6 +122,7 @@ function prepareDaemon(needs_keygen) {
getAddressFromPubkey(keypair.pubkey).then(addr_info => {
keypair.address = addr_info.address
keypair.CCaddress = addr_info.CCaddress
keypair.pubkey = keypair.pubkey

resolve({
generated: needs_keygen,
Expand Down Expand Up @@ -180,6 +198,7 @@ function launchDaemon(pubkey) {
getAddressFromPubkey(keypair.pubkey).then(addr_info => {
keypair.address = addr_info.address
keypair.CCaddress = addr_info.CCaddress
keypair.pubkey = keypair.pubkey

resolve({
generated: false,
Expand Down Expand Up @@ -213,19 +232,39 @@ function stopDaemon() {
// Wait a bit and tell that it's done, not being sure
let timeout = setTimeout(() => { resolve() }, 20000)

// If we get a close signal, that's it
komodod.on('close', code => {
clearTimeout(timeout)

resolve()
})
if (komodod) {
// If we get a close signal, that's it
komodod.on('close', code => {
clearTimeout(timeout)

resolve()
})
} else {
clearTimeout(timeout)

resolve()
}

})
})
}

function getBalance() {
return new Promise((resolve, reject) => {
if (chains[config.chain_name].isV2) {
child_process.execFile(cli_path, to_cli_args('tokenv2address'), (error, stdout, stderr) => {

if(stderr) {
console.log('getBalance failed: ', stderr)
reject(stderr)
}

if(stdout) {
resolve(JSON.parse(stdout)['mypk Normal Balance'])
}

})
} else {
child_process.execFile(cli_path, to_cli_args('getwalletinfo'), (error, stdout, stderr) => {

if(stderr) {
Expand All @@ -238,6 +277,7 @@ function getBalance() {
}

})
}
})
}

Expand All @@ -261,7 +301,7 @@ function getNewAddress() {

function getTokenBalance(id) {
return new Promise((resolve, reject) => {
child_process.execFile(cli_path, to_cli_args('tokenbalance ' + id), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2balance ' : 'tokenbalance ') + id), (error, stdout, stderr) => {

if(stderr) {
console.log('getTokenBalance failed: ', stderr)
Expand All @@ -278,7 +318,7 @@ function getTokenBalance(id) {

function getTokenName(id) {
return new Promise((resolve, reject) => {
child_process.execFile(cli_path, to_cli_args('tokeninfo ' + id), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2info ' : 'tokeninfo ') + id), (error, stdout, stderr) => {

if(stderr) {
console.log('getTokenName failed: ', stderr)
Expand All @@ -296,7 +336,7 @@ function getTokenName(id) {

function getTokenList() {
return new Promise((resolve, reject) => {
child_process.execFile(cli_path, to_cli_args('tokenlist'), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args(chains[config.chain_name].isV2 ? 'tokenv2list' : 'tokenlist'), (error, stdout, stderr) => {

if(stderr) {
console.log('getTokenList failed: ', stderr)
Expand Down Expand Up @@ -328,7 +368,7 @@ function getTokenList() {

function getTokenOrders() {
return new Promise((resolve, reject) => {
child_process.execFile(cli_path, to_cli_args('mytokenorders'), (error1, stdout1, stderr1) => {
child_process.execFile(cli_path, to_cli_args(chains[config.chain_name].isV2 ? 'mytokenv2orders' : 'mytokenorders'), (error1, stdout1, stderr1) => {
if(stderr1) {
console.log('getTokenOrders failed (mytokenorders): ', stderr1)
reject(stderr1)
Expand All @@ -338,7 +378,7 @@ function getTokenOrders() {
let myorders = JSON.parse(stdout1)
//console.warn('myorders', myorders);

child_process.execFile(cli_path, to_cli_args('tokenorders'), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args(chains[config.chain_name].isV2 ? 'tokenv2orders' : 'tokenorders'), (error, stdout, stderr) => {

if(stderr) {
console.log('getTokenOrders failed: ', stderr)
Expand Down Expand Up @@ -401,7 +441,7 @@ function importPrivKey(key) {

function getAddressFromPubkey(pubkey) {
return new Promise((resolve, reject) => {
child_process.execFile(cli_path, to_cli_args('tokenaddress ' + pubkey), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2address ' : 'tokenaddress ') + pubkey), (error, stdout, stderr) => {

if(stderr) {
console.log('getAddressFromPubkey failed: ', stderr)
Expand All @@ -411,7 +451,7 @@ function getAddressFromPubkey(pubkey) {
if(stdout) {
let json = JSON.parse(stdout)
// console.log('getAddressFromPubkey success: ', json)
resolve({ address: json.myaddress, CCaddress: json['PubkeyCCaddress(Tokens)'], } )
resolve({ address: json['mypk Normal Address'], CCaddress: json[chains[config.chain_name].isV2 ? 'mypk Tokensv2 CC Address' : 'mypk Tokens CC Address'], } )
}

})
Expand All @@ -423,7 +463,7 @@ function getAddressFromPubkey(pubkey) {
function sendToAddress(address, amount) {
return new Promise((resolve, reject) => {
console.log('Sending ' + amount + ' ' + getCoinName() + ' to ' + address)
const cli = child_process.execFile(cli_path, to_cli_args('sendtoaddress ' + address + ' ' + amount), (error, stdout, stderr) => {
const cli = child_process.execFile(cli_path, to_cli_args('sendtoaddress ' + address + ' ' + Number(amount)), (error, stdout, stderr) => {

if(stderr) {
console.log('sendToAddress failed: ', stderr)
Expand Down Expand Up @@ -463,13 +503,15 @@ function broadcastTX(raw_tx) {
function sendTokenToAddress(token_id, address, amount) {
return new Promise((resolve, reject) => {
console.log('Sending ' + amount + ' of token_id: ' + token_id + ' to ' + address)
child_process.execFile(cli_path, to_cli_args('tokentransfer ' + token_id + ' ' + address + ' ' + amount), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2transfer ' : 'tokentransfer ') + token_id + ' ' + address + ' ' + Number(amount)), (error, stdout, stderr) => {

if(stderr) {
console.log('sendTokenToAddress failed: ', stderr)
reject(stderr)
}

console.warn('tokentransfer hex', stdout);

if(stdout) {
console.log('tokentransfer ' + address + ' ' + amount)

Expand All @@ -487,12 +529,22 @@ function sendTokenToAddress(token_id, address, amount) {



function createToken(name, supply, description) {
function createToken(name, supply, description, opreturn) {
return new Promise((resolve, reject) => {
console.log('Creating token ' + name + ', supply: ' + supply + ' (' + (supply * 0.00000001) + ') ' + ' description: ' + description)
console.log('Creating token ' + name + ', supply: ' + supply + ' (' + Number(supply * 0.00000001).toFixed(8) + ') ' + ' description: ' + description)

let args = to_cli_args('tokencreate ' + name + ' ' + supply * 0.00000001)
if(description !== '') args.push('"' + description + '"')
if (opreturn && opreturn !== null) {
console.warn('Create token NFT', opreturn)
opreturn = Buffer.from(JSON.stringify(opreturn)).toString('hex')
console.warn('NTF opreturn hex', opreturn)
}

let args = to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2create ' : 'tokencreate ') + name + ' ' + Number(supply * 0.00000001).toFixed(8))
if(description !== '') args.push(description)
if(opreturn && opreturn !== null) args.push('f7' + opreturn)

console.warn('token create cliarg', args)
console.warn(args.join(' '))

child_process.execFile(cli_path, args, (error, stdout, stderr) => {

Expand All @@ -501,6 +553,13 @@ function createToken(name, supply, description) {
reject(stderr)
}

if (JSON.stringify(stdout).indexOf('Non-fungible data incorrect') > -1) {
console.log('createToken failed: ', stdout)
reject(stdout)
}

console.warn('daemon token create stdout', stdout)

if(stdout) {
console.log('Broadcasting tokencreate...')
broadcastTX(JSON.parse(stdout).hex).then(txid => {
Expand All @@ -519,8 +578,8 @@ function createTokenTradeOrder(action, supply, tokenid, price) {
return new Promise((resolve, reject) => {
console.log('Creating token buy order supply:' + supply + ', tokenid: ' + tokenid + ', price: ' + price)

child_process.execFile(cli_path, to_cli_args('token' + (action === 'buy' ? 'bid' : 'ask')
+ ' ' + supply + ' ' + tokenid + ' ' + price), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2' : 'token') + (action === 'buy' ? 'bid' : 'ask')
+ ' ' + Number(supply) + ' ' + tokenid + ' ' + Number(price)), (error, stdout, stderr) => {

if(stderr) {
console.log('createTokenTradeOrder failed: ', stderr)
Expand All @@ -544,8 +603,8 @@ function fillTokenOrder(func, tokenid, txid, count) {
return new Promise((resolve, reject) => {
console.log('Filling order token order:' + func + ', tokenid: ' + tokenid + ', txid: ' + txid + ' count: ' + count)

child_process.execFile(cli_path, to_cli_args('tokenfill' + (func === 'buy' ? 'ask' : 'bid')
+ ' ' + tokenid + ' ' + txid + ' ' + count), (error, stdout, stderr) => {
child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2fill' : 'tokenfill') + (func === 'buy' ? 'ask' : 'bid')
+ ' ' + tokenid + ' ' + txid + ' ' + Number(count)), (error, stdout, stderr) => {

if(stderr) {
console.log('fillTokenOrder failed: ', stderr)
Expand All @@ -569,7 +628,7 @@ function cancelTokenOrder(action, tokenid, txid) {
return new Promise((resolve, reject) => {
console.log('Cancelling order token order:' + action + ', tokenid: ' + tokenid + ', txid: ' + txid)

const cli = child_process.execFile(cli_path, to_cli_args('tokencancel' + action + ' ' + tokenid + ' ' + txid), (error, stdout, stderr) => {
const cli = child_process.execFile(cli_path, to_cli_args((chains[config.chain_name].isV2 ? 'tokenv2cancel' : 'tokencancel') + action + ' ' + tokenid + ' ' + txid), (error, stdout, stderr) => {

if(stderr) {
console.log('cancelTokenOrder failed: ', stderr)
Expand All @@ -594,6 +653,10 @@ function getCoinName() {
return config.coin_name
}

function isNFTCoin() {
return chains[config.chain_name].NFT
}

function getChainName() {
return config.chain_name
}
Expand Down Expand Up @@ -638,6 +701,7 @@ module.exports = {
getBalance,
getChainName,
getCoinName,
isNFTCoin,
getKomodoFolder,
sendToAddress,
getNewAddress,
Expand All @@ -651,5 +715,6 @@ module.exports = {
cancelTokenOrder,
readConfig,
forceImportKey,
chainName: default_config.chain_name,
chains,
setChain,
}
18 changes: 9 additions & 9 deletions fetch-kmd-bins.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ mkdir bin/win64
mkdir bin/linux64
mkdir bin/osx
cd bin/win64
wget https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_win.zip
unzip komodo_8688665_dev_win.zip
rm komodo_8688665_dev_win.zip
wget https://github.com/pbca26/komodod/releases/download/cd_release_4c1f3bb_tokens/komodo_4c1f3bb_tokens_win.zip
unzip komodo_4c1f3bb_tokens_win.zip
rm komodo_4c1f3bb_tokens_win.zip
cd ../linux64
wget https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_linux.zip
unzip komodo_8688665_dev_linux.zip
rm komodo_8688665_dev_linux.zip
wget https://github.com/pbca26/komodod/releases/download/cd_release_4c1f3bb_tokens/komodo_4c1f3bb_tokens_linux.zip
unzip komodo_4c1f3bb_tokens_linux.zip
rm komodo_4c1f3bb_tokens_linux.zip
cd ../osx
wget https://github.com/pbca26/komodod/releases/download/cd_release_8688665_dev/komodo_8688665_dev_osx.zip
unzip komodo_8688665_dev_osx.zip
rm komodo_8688665_dev_osx.zip
wget https://github.com/pbca26/komodod/releases/download/cd_release_4c1f3bb_tokens/komodo_4c1f3bb_tokens_osx.zip
unzip komodo_4c1f3bb_tokens_osx.zip
rm komodo_4c1f3bb_tokens_osx.zip
Loading