diff --git a/README.md b/README.md index 547fd3e7..f15d3372 100644 --- a/README.md +++ b/README.md @@ -47,16 +47,16 @@ const ptokens = new pTokens({ eosRpc: 'https:/...' // or also an instance of JsonRpc eosSignatureProvider: '....' // instance of JsSignatureProvider defaultNode: new Node({ - pToken: 'pBTC', - blockchain: 'ETH', - provider: new HttpProvider( - 'node endpoint', - { - 'Access-Control-Allow-Origin': '*', - ... - } - ) - }) + pToken: 'pBTC', + blockchain: 'ETH', + provider: new HttpProvider( + 'node endpoint', + { + 'Access-Control-Allow-Origin': '*', + ... + } + ) + }) } }) ``` diff --git a/lerna.json b/lerna.json index 5d8f98df..26002b55 100644 --- a/lerna.json +++ b/lerna.json @@ -2,5 +2,5 @@ "packages": [ "packages/*" ], - "version": "0.7.0" + "version": "0.7.1" } diff --git a/packages/ptokens-deposit-address/package.json b/packages/ptokens-deposit-address/package.json index effb30bd..b46b5f8d 100644 --- a/packages/ptokens-deposit-address/package.json +++ b/packages/ptokens-deposit-address/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-deposit-address", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code related to deposit addresses", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-deposit-address", "main": "dist/ptokens-deposit-address.cjs.js", @@ -32,9 +32,9 @@ "bitcoinjs-lib": "^5.1.6", "chai": "^4.2.0", "eosjs": "^20.0.3", - "ptokens-node": "^0.7.0", - "ptokens-providers": "^0.7.0", - "ptokens-utils": "^0.7.0", + "ptokens-node": "^0.7.1", + "ptokens-providers": "^0.7.1", + "ptokens-utils": "^0.7.1", "web3": "^1.2.2" }, "devDependencies": { diff --git a/packages/ptokens-node-selector/package.json b/packages/ptokens-node-selector/package.json index 7bc0445a..f44921a6 100644 --- a/packages/ptokens-node-selector/package.json +++ b/packages/ptokens-node-selector/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-node-selector", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code for selecting validator nodes", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-node-selector", "main": "dist/ptokens-node-selector.cjs.js", @@ -21,9 +21,9 @@ "@types/node": "^12.6.1", "axios": "^0.19.0", "chai": "^4.2.0", - "ptokens-node": "^0.7.0", - "ptokens-utils": "^0.7.0", - "ptokens-providers": "^0.7.0" + "ptokens-node": "^0.7.1", + "ptokens-utils": "^0.7.1", + "ptokens-providers": "^0.7.1" }, "devDependencies": { "dtslint": "0.4.2", diff --git a/packages/ptokens-node/package.json b/packages/ptokens-node/package.json index cd8634d4..bcc9a8fd 100644 --- a/packages/ptokens-node/package.json +++ b/packages/ptokens-node/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-node", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code for interacting with a Node", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-node", "main": "dist/ptokens-node.cjs.js", @@ -31,8 +31,8 @@ "eventemitter3": "^4.0.0", "jsonrpc-lite": "^2.2.0", "light-async-polling": "^1.0.2", - "ptokens-providers": "^0.7.0", - "ptokens-utils": "^0.7.0", + "ptokens-providers": "^0.7.1", + "ptokens-utils": "^0.7.1", "uuid": "^8.3.1", "web3-core-promievent": "^1.2.5-rc.0" }, diff --git a/packages/ptokens-node/src/index.js b/packages/ptokens-node/src/index.js index 5139f8a6..39a8aa44 100644 --- a/packages/ptokens-node/src/index.js +++ b/packages/ptokens-node/src/index.js @@ -180,12 +180,12 @@ export class Node { await polling(async () => { incomingTx = await this.getReportByIncomingTxHash(_hash) - if (incomingTx.broadcast === false && !isSeen) { + if (incomingTx && incomingTx.broadcast === false && !isSeen) { _eventEmitter.emit('nodeReceivedTx', incomingTx) _eventEmitter.emit('onNodeReceivedTx', incomingTx) isSeen = true return false - } else if (incomingTx.broadcast === true) { + } else if (incomingTx && incomingTx.broadcast === true) { if (!isSeen) { _eventEmitter.emit('nodeReceivedTx', incomingTx) _eventEmitter.emit('onNodeReceivedTx', incomingTx) diff --git a/packages/ptokens-pbtc/package.json b/packages/ptokens-pbtc/package.json index fd096cea..7c3ac797 100644 --- a/packages/ptokens-pbtc/package.json +++ b/packages/ptokens-pbtc/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-pbtc", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code for interacting with pBTC", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-pbtc", "main": "dist/ptokens-pbtc.cjs.js", @@ -31,11 +31,11 @@ "bitcoinjs-lib": "^5.1.6", "chai": "^4.2.0", "eosjs": "^20.0.0", - "ptokens-deposit-address": "^0.7.0", - "ptokens-node": "^0.7.0", - "ptokens-node-selector": "^0.7.0", - "ptokens-providers": "^0.7.0", - "ptokens-utils": "^0.7.0", + "ptokens-deposit-address": "^0.7.1", + "ptokens-node": "^0.7.1", + "ptokens-node-selector": "^0.7.1", + "ptokens-providers": "^0.7.1", + "ptokens-utils": "^0.7.1", "web3": "^1.2.2", "web3-core-promievent": "^1.2.1", "web3-utils": "^1.2.4" diff --git a/packages/ptokens-perc20/package.json b/packages/ptokens-perc20/package.json index 4a0f39c3..d842f81e 100644 --- a/packages/ptokens-perc20/package.json +++ b/packages/ptokens-perc20/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-perc20", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code for interacting with Ether or a generic Ethereum ERC20 token", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-perc20", "main": "dist/ptokens-perc20.cjs.js", @@ -29,9 +29,9 @@ "bignumber.js": "^9.0.0", "chai": "^4.2.0", "eosjs": "^20.0.0", - "ptokens-node": "^0.7.0", - "ptokens-node-selector": "^0.7.0", - "ptokens-utils": "^0.7.0", + "ptokens-node": "^0.7.1", + "ptokens-node-selector": "^0.7.1", + "ptokens-utils": "^0.7.1", "web3": "^1.2.2", "web3-core-promievent": "^1.2.1", "web3-utils": "^1.2.4" diff --git a/packages/ptokens-perc20/src/index.js b/packages/ptokens-perc20/src/index.js index bf00c8ed..0d1341b6 100644 --- a/packages/ptokens-perc20/src/index.js +++ b/packages/ptokens-perc20/src/index.js @@ -13,14 +13,25 @@ const minimumAmounts = { [constants.tokens.WETH]: { issue: 1000000000, redeem: 0.000000001 + }, + [constants.tokens.PNT]: { + issue: 1000000000, + redeem: 0.000000001 + }, + [constants.tokens.LINK]: { + issue: 1000000000, + redeem: 0.000000001 + }, + [constants.tokens.MKR]: { + issue: 1000000000, + redeem: 0.000000001 + }, + [constants.tokens.YFI]: { + issue: 1000000000, + redeem: 0.000000001 } } -const pTokensNativeContract = { - peth: constants.tokens.ETH, - pweth: constants.tokens.WETH -} - export class pERC20 extends NodeSelector { constructor(_configs) { const { @@ -47,13 +58,9 @@ export class pERC20 extends NodeSelector { ethProvider, eosPrivateKey, eosRpc, - eosSignatureProvider, - pToken + eosSignatureProvider } = _configs - this.tokenAddress = pTokensNativeContract[pToken.toLowerCase()] - if (!this.tokenAddress) throw new Error('Not supported or invalid pToken') - if ( // eslint-disable-next-line (!ethPrivateKey && !ethProvider) || @@ -81,6 +88,9 @@ export class pERC20 extends NodeSelector { } else if (!eosSignatureProvider && !eosPrivateKey && eosRpc) { this.hostApi = eos.getApi(null, eosRpc, null) } + + this._peginEth = + _configs.pToken.toLowerCase() === constants.pTokens.pETH ? true : false } /** * @param {String|BigNumber|BN} _amount in wei @@ -93,11 +103,15 @@ export class pERC20 extends NodeSelector { const start = async () => { try { + await this._loadData() + if ( - BigNumber(_amount).isLessThan(minimumAmounts[this.tokenAddress].issue) + BigNumber(_amount).isLessThan( + minimumAmounts[this.nativeContractAddress].issue + ) ) { // prettier-ignore - promiEvent.reject(`Impossible to issue less than ${minimumAmounts[this.tokenAddress].issue}`) + promiEvent.reject(`Impossible to issue less than ${minimumAmounts[this.nativeContractAddress].issue}`) return } @@ -110,25 +124,24 @@ export class pERC20 extends NodeSelector { } if (!this.selectedNode) await this.select() - await this._loadContractAddresses() let ethTxHash = null const waitForEthTransaction = () => new Promise((_resolve, _reject) => { eth[this.ethPrivateKey ? 'sendSignedMethodTx' : 'makeContractSend']( this.web3, - this.tokenAddress === constants.tokens.ETH ? 'pegInEth' : 'pegIn', + this._peginEth ? 'pegInEth' : 'pegIn', { privateKey: this.ethPrivateKey, - abi: abi.pERC20Native, + abi: abi.pERC20Vault, gas, gasPrice, - contractAddress: eth.addHexPrefix(this.nativeContractAddress), - value: this.tokenAddress === constants.tokens.ETH ? _amount : 0 + contractAddress: eth.addHexPrefix(this.nativeVaultAddress), + value: this._peginEth ? _amount : 0 }, - this.tokenAddress === constants.tokens.ETH + this._peginEth ? [_hostAccount] - : [_amount, this.tokenAddress, _hostAccount] + : [_amount, this.nativeContractAddress, _hostAccount] ) .once('transactionHash', _hash => { ethTxHash = _hash @@ -180,13 +193,15 @@ export class pERC20 extends NodeSelector { const start = async () => { try { + await this._loadData() + if ( BigNumber(_amount).isLessThan( - minimumAmounts[this.tokenAddress].redeem + minimumAmounts[this.nativeContractAddress].redeem ) ) { // prettier-ignore - promiEvent.reject(`Impossible to redeem less than ${minimumAmounts[this.tokenAddress].redeem}`) + promiEvent.reject(`Impossible to redeem less than ${minimumAmounts[this.nativeContractAddress].redeem}`) return } @@ -199,7 +214,6 @@ export class pERC20 extends NodeSelector { } if (!this.selectedNode) await this.select() - await this._loadContractAddresses() const { redeemFromEosio } = redeemFrom @@ -209,7 +223,7 @@ export class pERC20 extends NodeSelector { this.hostApi, _amount, _nativeAccount, - 9, // NOTE: WETH decimals on EOS + 9, // NOTE: perc20 decimals on EOS this.hostContractAddress, this.pToken === constants.pTokens.pWETH ? 'peth' : this.pToken ) @@ -245,21 +259,30 @@ export class pERC20 extends NodeSelector { return promiEvent.eventEmitter } - async _loadContractAddresses() { + async _loadData() { try { if (!this.selectedNode) await this.select() if (!this.nativeContractAddress || !this.hostContractAddress) { const { native_smart_contract_address, - host_smart_contract_address + host_smart_contract_address, + native_vault_address } = await this.selectedNode.getInfo() - this.nativeContractAddress = native_smart_contract_address - this.hostContractAddress = host_smart_contract_address + this.nativeContractAddress = eth.addHexPrefix( + native_smart_contract_address + ) + this.hostContractAddress = + this.hostBlockchain === constants.blockchains.Eosio + ? host_smart_contract_address + : eth.addHexPrefix(host_smart_contract_address) + this.nativeVaultAddress = native_vault_address + ? eth.addHexPrefix(native_vault_address) + : null } return this.nativeContractAddress } catch (_err) { - throw new Error(`Error during getting contract address: ${_err.message}`) + throw new Error(`Error during loading data: ${_err.message}`) } } } diff --git a/packages/ptokens-perc20/tests/pmkr-on-eos.test.js b/packages/ptokens-perc20/tests/pmkr-on-eos.test.js new file mode 100644 index 00000000..3e324fa9 --- /dev/null +++ b/packages/ptokens-perc20/tests/pmkr-on-eos.test.js @@ -0,0 +1,157 @@ +import { pERC20 } from '../src/index' +import { expect } from 'chai' +import { JsonRpc } from 'eosjs' +import fetch from 'node-fetch' +import { constants, eth } from 'ptokens-utils' +import BigNumber from 'bignumber.js' +import Web3 from 'web3' + +// prettier-ignore +const ETH_TESTING_ADDRESS = '' +// prettier-ignore +const ETH_TESTING_PRIVATE_KEY = '' +// prettier-ignore +const WEB3_PROVIDER = '' +// prettier-ignore +const EOS_TESTING_PRIVATE_KEY = '' +const EOS_TESTING_NODE_ENDPOINT = '' +const EOS_TESTING_ACCOUNT_NAME = '' + +jest.setTimeout(3000000) + +let pmkr = null +beforeEach(() => { + pmkr = new pERC20({ + blockchain: constants.blockchains.Eosio, + network: constants.networks.Mainnet, + ethPrivateKey: ETH_TESTING_PRIVATE_KEY, + ethProvider: WEB3_PROVIDER, + eosRpc: new JsonRpc(EOS_TESTING_NODE_ENDPOINT, { fetch }), + eosPrivateKey: EOS_TESTING_PRIVATE_KEY, + pToken: constants.pTokens.pMKR + }) +}) + +test('Should not issue less than 1000000000 pMKR', async () => { + const amountToIssue = BigNumber('900000000') + try { + await pmkr.issue(amountToIssue, EOS_TESTING_ACCOUNT_NAME) + } catch (_err) { + expect(_err).to.be.equal('Impossible to issue less than 1000000000') + } +}) + +test('Should issue 0.00002 pMKR using ETH', async () => { + const amountToIssue = BigNumber('20000000000000') + let ethTxBrodcasted = 2 + let ethTxIsConfirmed = false + let nodeHasReceivedTx = false + let nodeHasBroadcastedTx = false + let eosTxIsConfirmed = false + + await pmkr.select() + const { native_vault_address } = await pmkr.selectedNode.getInfo() + + const web3 = new Web3(WEB3_PROVIDER) + web3.eth.defaultAccount = ETH_TESTING_ADDRESS + await eth.sendSignedMethodTx( + web3, + 'approve', + { + privateKey: ETH_TESTING_PRIVATE_KEY, + abi: [ + { + constant: false, + inputs: [ + { + name: '_spender', + type: 'address' + }, + { + name: '_value', + type: 'uint256' + } + ], + name: 'approve', + outputs: [ + { + name: '', + type: 'bool' + } + ], + payable: false, + stateMutability: 'nonpayable', + type: 'function' + } + ], + gas: 200000, + gasPrice: 75e9, + contractAddress: constants.tokens.MKR, + value: 0 + }, + [eth.addHexPrefix(native_vault_address), BigNumber('20000000000000')] + ) + + const start = () => + new Promise(resolve => { + pmkr + .issue(amountToIssue, EOS_TESTING_ACCOUNT_NAME, { + gasPrice: 75e9, + gas: 200000 + }) + .once('nativeTxBroadcasted', () => { + ethTxBrodcasted = true + }) + .once('nativeTxConfirmed', () => { + ethTxIsConfirmed = true + }) + .once('nodeReceivedTx', () => { + nodeHasReceivedTx = true + }) + .once('nodeBroadcastedTx', () => { + nodeHasBroadcastedTx = true + }) + .once('hostTxConfirmed', () => { + eosTxIsConfirmed = true + }) + .then(() => resolve()) + }) + await start() + expect(ethTxBrodcasted).to.equal(true) + expect(ethTxIsConfirmed).to.equal(true) + expect(nodeHasReceivedTx).to.equal(true) + expect(nodeHasBroadcastedTx).to.equal(true) + expect(eosTxIsConfirmed).to.equal(true) +}) + +test('Should redeem 0.00002 pMKR on EOS', async () => { + const amountToRedeem = 0.00002 + let eosTxIsConfirmed = false + let nodeHasReceivedTx = false + let nodeHasBroadcastedTx = false + let ethTxIsConfirmed = false + const start = () => + new Promise((resolve, reject) => { + pmkr + .redeem(amountToRedeem, ETH_TESTING_ADDRESS) + .once('hostTxConfirmed', () => { + eosTxIsConfirmed = true + }) + .once('nodeReceivedTx', () => { + nodeHasReceivedTx = true + }) + .once('nodeBroadcastedTx', () => { + nodeHasBroadcastedTx = true + }) + .once('nativeTxConfirmed', () => { + ethTxIsConfirmed = true + }) + .then(() => resolve()) + .catch(_err => reject(_err)) + }) + await start() + expect(eosTxIsConfirmed).to.equal(true) + expect(nodeHasReceivedTx).to.equal(true) + expect(nodeHasBroadcastedTx).to.equal(true) + expect(ethTxIsConfirmed).to.equal(true) +}) diff --git a/packages/ptokens-perc20/tests/pnt-on-eos.test.js b/packages/ptokens-perc20/tests/pnt-on-eos.test.js new file mode 100644 index 00000000..400e283b --- /dev/null +++ b/packages/ptokens-perc20/tests/pnt-on-eos.test.js @@ -0,0 +1,166 @@ +import { pERC20 } from '../src/index' +import { expect } from 'chai' +import { JsonRpc } from 'eosjs' +import fetch from 'node-fetch' +import { constants, eth } from 'ptokens-utils' +import BigNumber from 'bignumber.js' +import Web3 from 'web3' + +// prettier-ignore +const ETH_TESTING_ADDRESS = '' +// prettier-ignore +const ETH_TESTING_PRIVATE_KEY = '' +// prettier-ignore +const WEB3_PROVIDER = '' +// prettier-ignore +const EOS_TESTING_PRIVATE_KEY = '' +const EOS_TESTING_NODE_ENDPOINT = '' +const EOS_TESTING_ACCOUNT_NAME = '' + +jest.setTimeout(3000000) + +let pnt = null +beforeEach(() => { + pnt = new pERC20({ + blockchain: constants.blockchains.Eosio, + network: constants.networks.Mainnet, + ethPrivateKey: ETH_TESTING_PRIVATE_KEY, + ethProvider: WEB3_PROVIDER, + eosRpc: new JsonRpc(EOS_TESTING_NODE_ENDPOINT, { fetch }), + eosPrivateKey: EOS_TESTING_PRIVATE_KEY, + pToken: constants.pTokens.PNT + }) +}) + +test('Should not issue less than 1000000000 pNT', async () => { + const amountToIssue = BigNumber('900000000') + try { + await pnt.issue(amountToIssue, EOS_TESTING_ACCOUNT_NAME) + } catch (_err) { + expect(_err).to.be.equal('Impossible to issue less than 1000000000') + } +}) + +test('Should issue 0.00002 pNT using ETH', async () => { + const amountToIssue = BigNumber('20000000000000') + let ethTxBrodcasted = 2 + let ethTxIsConfirmed = false + let nodeHasReceivedTx = false + let nodeHasBroadcastedTx = false + let eosTxIsConfirmed = false + + await pnt.select() + const { native_vault_address } = await pnt.selectedNode.getInfo() + + const web3 = new Web3(WEB3_PROVIDER) + web3.eth.defaultAccount = ETH_TESTING_ADDRESS + await eth.sendSignedMethodTx( + web3, + 'approve', + { + privateKey: ETH_TESTING_PRIVATE_KEY, + abi: [ + { + constant: false, + inputs: [ + { + name: '_spender', + type: 'address' + }, + { + name: '_value', + type: 'uint256' + } + ], + name: 'approve', + outputs: [ + { + name: '', + type: 'bool' + } + ], + payable: false, + stateMutability: 'nonpayable', + type: 'function' + } + ], + gas: 200000, + gasPrice: 75e9, + contractAddress: constants.tokens.PNT, + value: 0 + }, + [eth.addHexPrefix(native_vault_address), BigNumber('20000000000000')] + ) + + const start = () => + new Promise(resolve => { + pnt + .issue(amountToIssue, EOS_TESTING_ACCOUNT_NAME, { + gasPrice: 75e9, + gas: 200000 + }) + .once('nativeTxBroadcasted', e => { + console.log(e) + ethTxBrodcasted = true + }) + .once('nativeTxConfirmed', e => { + console.log(e) + ethTxIsConfirmed = true + }) + .once('nodeReceivedTx', e => { + console.log(e) + nodeHasReceivedTx = true + }) + .once('nodeBroadcastedTx', e => { + console.log(e) + nodeHasBroadcastedTx = true + }) + .once('hostTxConfirmed', e => { + console.log(e) + eosTxIsConfirmed = true + }) + .then(() => resolve()) + }) + await start() + expect(ethTxBrodcasted).to.equal(true) + expect(ethTxIsConfirmed).to.equal(true) + expect(nodeHasReceivedTx).to.equal(true) + expect(nodeHasBroadcastedTx).to.equal(true) + expect(eosTxIsConfirmed).to.equal(true) +}) + +test('Should redeem 0.00002 pNT on EOS', async () => { + const amountToRedeem = 0.00002 + let eosTxIsConfirmed = false + let nodeHasReceivedTx = false + let nodeHasBroadcastedTx = false + let ethTxIsConfirmed = false + const start = () => + new Promise((resolve, reject) => { + pnt + .redeem(amountToRedeem, ETH_TESTING_ADDRESS) + .once('hostTxConfirmed', e => { + console.log(e) + eosTxIsConfirmed = true + }) + .once('nodeReceivedTx', e => { + console.log(e) + nodeHasReceivedTx = true + }) + .once('nodeBroadcastedTx', e => { + console.log(e) + nodeHasBroadcastedTx = true + }) + .once('nativeTxConfirmed', e => { + console.log(e) + ethTxIsConfirmed = true + }) + .then(() => resolve()) + .catch(_err => reject(_err)) + }) + await start() + expect(eosTxIsConfirmed).to.equal(true) + expect(nodeHasReceivedTx).to.equal(true) + expect(nodeHasBroadcastedTx).to.equal(true) + expect(ethTxIsConfirmed).to.equal(true) +}) diff --git a/packages/ptokens-perc20/types/index.d.ts b/packages/ptokens-perc20/types/index.d.ts index af87ed97..3c26706e 100644 --- a/packages/ptokens-perc20/types/index.d.ts +++ b/packages/ptokens-perc20/types/index.d.ts @@ -42,7 +42,11 @@ export class pERC20 extends NodeSelector { decimals: string | null - contractAddress: string | null + nativeContractAddress: string | null + + hostContractAddress: string | null + + nativeVaultAddress: string | null hostPrivatekey?: string | null @@ -50,10 +54,6 @@ export class pERC20 extends NodeSelector { hostApi?: Api - tokenAddress: string - - pToken: string - issue(_amount: string | BigNumber | BN, _hostAddress: string, _options?: Options): PromiEvent redeem(_amount: number | string, _nativeAddress: string): PromiEvent diff --git a/packages/ptokens-pltc/package.json b/packages/ptokens-pltc/package.json index 078c8dae..34a73f0c 100644 --- a/packages/ptokens-pltc/package.json +++ b/packages/ptokens-pltc/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-pltc", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code for interacting with PLTC", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-pltc", "main": "dist/ptokens-pltc.cjs.js", @@ -31,10 +31,10 @@ "bitcoinjs-lib": "^5.1.6", "chai": "^4.2.0", "eosjs": "^20.0.0", - "ptokens-deposit-address": "^0.7.0", - "ptokens-node": "^0.7.0", - "ptokens-node-selector": "^0.7.0", - "ptokens-utils": "^0.7.0", + "ptokens-deposit-address": "^0.7.1", + "ptokens-node": "^0.7.1", + "ptokens-node-selector": "^0.7.1", + "ptokens-utils": "^0.7.1", "web3": "^1.2.2", "web3-core-promievent": "^1.2.1", "web3-utils": "^1.2.4" diff --git a/packages/ptokens-providers/package.json b/packages/ptokens-providers/package.json index 79413653..82386336 100644 --- a/packages/ptokens-providers/package.json +++ b/packages/ptokens-providers/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-providers", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding the code related to network providers", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-providers", "main": "dist/ptokens-providers.cjs.js", diff --git a/packages/ptokens-utils/package.json b/packages/ptokens-utils/package.json index e766f874..5c69e172 100644 --- a/packages/ptokens-utils/package.json +++ b/packages/ptokens-utils/package.json @@ -1,6 +1,6 @@ { "name": "ptokens-utils", - "version": "0.7.0", + "version": "0.7.1", "description": "repo holding some utils needed by other packages", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens-utils", "main": "dist/ptokens-utils.cjs.js", @@ -34,7 +34,7 @@ "eosjs": "^20.0.3", "eventemitter3": "^4.0.0", "light-async-polling": "^1.0.2", - "text-encoding": "^0.7.0", + "text-encoding": "^0.7.1", "web3": "^1.2.2" }, "devDependencies": { diff --git a/packages/ptokens-utils/src/abi/pERC20NativeContractAbi.json b/packages/ptokens-utils/src/abi/pERC20VaultContractAbi.json similarity index 100% rename from packages/ptokens-utils/src/abi/pERC20NativeContractAbi.json rename to packages/ptokens-utils/src/abi/pERC20VaultContractAbi.json diff --git a/packages/ptokens-utils/src/constants.js b/packages/ptokens-utils/src/constants.js index 61116d32..6c7e4139 100644 --- a/packages/ptokens-utils/src/constants.js +++ b/packages/ptokens-utils/src/constants.js @@ -16,10 +16,13 @@ import { pBTC, pLTC, pETH, - pWETH + pWETH, + pLINK, + pMKR, + pYFI, + PNT } from './helpers/names' - -import { ETH, WETH } from './helpers/tokens' +import * as tokens from './helpers/tokens' /** * @@ -57,16 +60,11 @@ const pTokens = { pBTC, pLTC, pETH, - pWETH -} - -/** - * - * Tokens list - */ -const tokens = { - ETH, - WETH + pWETH, + pLINK, + pMKR, + pYFI, + PNT } export { blockchains, networks, pTokens, tokens } diff --git a/packages/ptokens-utils/src/helpers/maps.js b/packages/ptokens-utils/src/helpers/maps.js index 0bdae3b0..910dc253 100644 --- a/packages/ptokens-utils/src/helpers/maps.js +++ b/packages/ptokens-utils/src/helpers/maps.js @@ -16,7 +16,11 @@ import { pBTC, pLTC, pWETH, - pETH + pETH, + pYFI, + PNT, + pLINK, + pMKR } from './names' export const blockchainTypes = { @@ -41,7 +45,11 @@ export const pTokenNativeBlockchain = { pbtc: Bitcoin, pltc: Litecoin, pweth: Ethereum, - peth: Ethereum + peth: Ethereum, + plink: Ethereum, + pyfi: Ethereum, + pmkr: Ethereum, + pnt: Ethereum } export const networkLabels = { @@ -74,4 +82,13 @@ export const networkLabelType = { mainnet: Mainnet } -export const pTokensAvailables = [pBTC, pLTC, pWETH, pETH] +export const pTokensAvailables = [ + pBTC, + pLTC, + pWETH, + pETH, + pYFI, + pMKR, + PNT, + pLINK +] diff --git a/packages/ptokens-utils/src/helpers/names.js b/packages/ptokens-utils/src/helpers/names.js index acd3d56c..65a0fa2f 100644 --- a/packages/ptokens-utils/src/helpers/names.js +++ b/packages/ptokens-utils/src/helpers/names.js @@ -19,3 +19,7 @@ export const pBTC = 'pbtc' export const pLTC = 'pltc' export const pETH = 'peth' export const pWETH = 'pweth' +export const pMKR = 'pmkr' +export const pLINK = 'plink' +export const pYFI = 'pyfi' +export const PNT = 'pnt' diff --git a/packages/ptokens-utils/src/helpers/tokens.js b/packages/ptokens-utils/src/helpers/tokens.js index 0570d10a..d09959ac 100644 --- a/packages/ptokens-utils/src/helpers/tokens.js +++ b/packages/ptokens-utils/src/helpers/tokens.js @@ -1,2 +1,6 @@ export const ETH = '0x0000000000000000000000000000000000000000' export const WETH = '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2' +export const PNT = '0x89ab32156e46f46d02ade3fecbe5fc4243b9aaed' +export const MKR = '0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2' +export const LINK = '0x514910771af9ca656af840dff83e8264ecf986ca' +export const YFI = '0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e' diff --git a/packages/ptokens-utils/src/index.js b/packages/ptokens-utils/src/index.js index a0e43657..5b1fc478 100644 --- a/packages/ptokens-utils/src/index.js +++ b/packages/ptokens-utils/src/index.js @@ -7,7 +7,7 @@ import * as helpers from './helpers/index' import * as constants from './constants' import { redeemFromEosio } from './redeem-from/redeem-from-eosio' import { redeemFromEthereum } from './redeem-from/redeem-from-ethereum' -import pERC20NativeContractAbi from './abi/pERC20NativeContractAbi.json' +import pERC20VaultContractAbi from './abi/pERC20VaultContractAbi.json' import pTokenOnEosAbi from './abi/pTokenOnEOSContractAbi.json' import pTokenOnEthAbi from './abi/pTokenOnETHContractAbi.json' @@ -15,7 +15,7 @@ export default { abi: { pTokenOnEth: pTokenOnEthAbi, pTokenOnEos: pTokenOnEosAbi, - pERC20Native: pERC20NativeContractAbi + pERC20Vault: pERC20VaultContractAbi }, btc, converters, diff --git a/packages/ptokens-utils/types/index.d.ts b/packages/ptokens-utils/types/index.d.ts index 5c848d78..deb62f9b 100644 --- a/packages/ptokens-utils/types/index.d.ts +++ b/packages/ptokens-utils/types/index.d.ts @@ -124,6 +124,7 @@ export interface EthUtils { isHexPrefixed(_string: string): boolean makeContractCall(_web3: Web3, _method: string, _options: ContractCallParam, _params: Array): Promise makeContractSend(_web3: Web3, _method: string, _options: ContractSendParam, _params: Array): Promise + sendSignedMethodTx(_web3: Web3, _method: string, _options: ContractSendParam, _params: Array): Promise waitForTransactionConfirmation(_web3: Web3, _tx: string, _pollingTime: number): Promise } @@ -195,12 +196,20 @@ export interface pTokens { pBTC: string, pLTC: string, pWETH: string, - pETH: string + pETH: string, + pLINK: string, + PNT: string, + pMKR: string, + pYFI: string, } export interface Tokens { ETH: string, WETH: string, + LINK: string, + PNT: string, + MKR: string, + YFI: string, } export interface Constants { diff --git a/packages/ptokens-utils/types/tests/ptokens-utils-test.ts b/packages/ptokens-utils/types/tests/ptokens-utils-test.ts index 4535efda..13692b49 100644 --- a/packages/ptokens-utils/types/tests/ptokens-utils-test.ts +++ b/packages/ptokens-utils/types/tests/ptokens-utils-test.ts @@ -96,6 +96,17 @@ eth.makeContractSend( ['hello'] ) +// $ExpectType Promise +eth.sendSignedMethodTx( + new Web3(), + 'write', + { + abi: [{ param1: '' }], + contractAddress: ETH_TESTING_CONTRACT_ADDRESS + }, + ['hello'] +) + // $ExpectType Promise eth.waitForTransactionConfirmation(new Web3(), ETH_TESTING_TX, 1000) diff --git a/packages/ptokens/package.json b/packages/ptokens/package.json index 258a2b7a..cb5f4cee 100644 --- a/packages/ptokens/package.json +++ b/packages/ptokens/package.json @@ -1,6 +1,6 @@ { "name": "ptokens", - "version": "0.7.0", + "version": "0.7.1", "description": "main ptokens package", "repository": "https://github.com/provable-things/ptokens.js/tree/master/packages/ptokens", "main": "dist/ptokens.cjs.js", @@ -25,12 +25,12 @@ "@babel/runtime": "^7.3.1", "@types/node": "^12.6.1", "chai": "^4.2.0", - "ptokens-pbtc": "^0.7.0", - "ptokens-perc20": "^0.7.0", - "ptokens-pltc": "^0.7.0", - "ptokens-deposit-address": "^0.7.0", - "ptokens-providers": "^0.7.0", - "ptokens-utils": "^0.7.0" + "ptokens-pbtc": "^0.7.1", + "ptokens-perc20": "^0.7.1", + "ptokens-pltc": "^0.7.1", + "ptokens-deposit-address": "^0.7.1", + "ptokens-providers": "^0.7.1", + "ptokens-utils": "^0.7.1" }, "devDependencies": { "dtslint": "0.4.2",