Skip to content

Commit

Permalink
Merge branch 'dev-alessandro'
Browse files Browse the repository at this point in the history
  • Loading branch information
allemanfredi committed Oct 23, 2020
2 parents dcb38c5 + b9a83fb commit 9cffabb
Show file tree
Hide file tree
Showing 24 changed files with 490 additions and 101 deletions.
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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': '*',
...
}
)
})
}
})
```
Expand Down
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
"packages": [
"packages/*"
],
"version": "0.7.0"
"version": "0.7.1"
}
8 changes: 4 additions & 4 deletions packages/ptokens-deposit-address/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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": {
Expand Down
8 changes: 4 additions & 4 deletions packages/ptokens-node-selector/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -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",
Expand Down
6 changes: 3 additions & 3 deletions packages/ptokens-node/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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"
},
Expand Down
4 changes: 2 additions & 2 deletions packages/ptokens-node/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
12 changes: 6 additions & 6 deletions packages/ptokens-pbtc/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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"
Expand Down
8 changes: 4 additions & 4 deletions packages/ptokens-perc20/package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down Expand Up @@ -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"
Expand Down
79 changes: 51 additions & 28 deletions packages/ptokens-perc20/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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) ||
Expand Down Expand Up @@ -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
Expand All @@ -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
}

Expand All @@ -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
Expand Down Expand Up @@ -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
}

Expand All @@ -199,7 +214,6 @@ export class pERC20 extends NodeSelector {
}

if (!this.selectedNode) await this.select()
await this._loadContractAddresses()

const { redeemFromEosio } = redeemFrom

Expand All @@ -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
)
Expand Down Expand Up @@ -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}`)
}
}
}
Loading

0 comments on commit 9cffabb

Please sign in to comment.