Merge pull request #24 from k1rill-fedoseev/master

This commit is contained in:
Alexander Kolotov 2019-11-27 21:43:33 +03:00 committed by GitHub
commit 3d8623e05d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 23 deletions

View File

@ -123,11 +123,19 @@ contract BasicBridge {
}
function getX() view public returns (uint) {
return states[epoch].x;
return getX(epoch);
}
function getX(uint16 _epoch) view public returns (uint) {
return states[_epoch].x;
}
function getY() view public returns (uint) {
return states[epoch].y;
return getY(epoch);
}
function getY(uint16 _epoch) view public returns (uint) {
return states[_epoch].y;
}
function getCloseEpoch() view public returns (bool) {

View File

@ -63,17 +63,20 @@ async function initialize() {
sideProvider = new ethers.providers.JsonRpcProvider(SIDE_RPC_URL)
homeProvider = new ethers.providers.JsonRpcProvider(HOME_RPC_URL)
homeWallet = new ethers.Wallet(HOME_PRIVATE_KEY, homeProvider)
bridge = new ethers.Contract(HOME_BRIDGE_ADDRESS, bridgeAbi, homeWallet)
sharedDb = new ethers.Contract(SIDE_SHARED_DB_ADDRESS, sharedDbAbi, sideProvider)
nonce = await homeWallet.getTransactionCount()
await sideProvider.getNetwork()
await homeProvider.getNetwork()
break
} catch (e) {
console.log('Cannot create providers')
await delay(1000)
}
}
homeWallet = new ethers.Wallet(HOME_PRIVATE_KEY, homeProvider)
bridge = new ethers.Contract(HOME_BRIDGE_ADDRESS, bridgeAbi, homeWallet)
sharedDb = new ethers.Contract(SIDE_SHARED_DB_ADDRESS, sharedDbAbi, sideProvider)
nonce = await homeWallet.getTransactionCount()
}
async function loop() {

View File

@ -23,6 +23,8 @@ const bridgeAbi = [
'event EpochStart(uint16 indexed epoch, uint256 x, uint256 y)',
'event EpochClose(uint16 indexed epoch)',
'event ForceSign()',
'function getX(uint16 epoch) view returns (uint256)',
'function getY(uint16 epoch) view returns (uint256)',
'function getThreshold(uint16 epoch) view returns (uint16)',
'function getParties(uint16 epoch) view returns (uint16)',
'function getRangeSize(uint16 epoch) view returns (uint16)',
@ -92,11 +94,15 @@ async function resetFutureMessages(queue) {
async function sendKeygen(event) {
const { newEpoch } = event.values
const [threshold, parties] = await Promise.all([
bridge.getThreshold(newEpoch),
bridge.getParties(newEpoch)
])
keygenQueue.send({
epoch: newEpoch,
blockNumber,
threshold: await bridge.getThreshold(newEpoch),
parties: await bridge.getParties(newEpoch)
threshold,
parties
})
logger.debug('Sent keygen start event')
}
@ -112,13 +118,26 @@ function sendKeygenCancellation(event) {
async function sendSignFundsTransfer(event) {
const { newEpoch, oldEpoch } = event.values
const [
x, y, threshold, parties
] = await Promise.all([
bridge.getX(newEpoch).then((value) => new BN(value).toString(16)),
bridge.getY(newEpoch).then((value) => new BN(value).toString(16)),
bridge.getThreshold(oldEpoch),
bridge.getParties(oldEpoch)
])
const recipient = publicKeyToAddress({
x,
y
})
signQueue.send({
epoch: oldEpoch,
blockNumber,
newEpoch,
nonce: foreignNonce[oldEpoch],
threshold: await bridge.getThreshold(oldEpoch),
parties: await bridge.getParties(oldEpoch)
recipient,
threshold,
parties
})
logger.debug('Sent sign funds transfer event')
foreignNonce[oldEpoch] += 1
@ -161,12 +180,16 @@ async function sendSign(event, transactionHash) {
}
async function sendStartSign() {
const [threshold, parties] = await Promise.all([
bridge.getThreshold(epoch),
bridge.getParties(epoch)
])
signQueue.send({
epoch,
blockNumber,
nonce: foreignNonce[epoch],
threshold: await bridge.getThreshold(epoch),
parties: await bridge.getParties(epoch)
threshold,
parties
})
foreignNonce[epoch] += 1
redisTx.incr(`foreignNonce${epoch}`)
@ -189,12 +212,16 @@ async function processEpochStart(event) {
async function sendEpochClose() {
logger.debug(`Consumed epoch ${epoch} close event`)
const [threshold, parties] = await Promise.all([
bridge.getThreshold(epoch),
bridge.getParties(epoch)
])
signQueue.send({
closeEpoch: epoch,
blockNumber,
nonce: foreignNonce[epoch],
threshold: await bridge.getThreshold(epoch),
parties: await bridge.getParties(epoch)
threshold,
parties
})
foreignNonce[epoch] += 1
redisTx.incr(`foreignNonce${epoch}`)

View File

@ -222,7 +222,9 @@ function getAccountBalance(account, asset) {
}
async function buildTx(from, account, data) {
const { closeEpoch, newEpoch, nonce } = data
const {
closeEpoch, newEpoch, nonce, recipient: to
} = data
const txOptions = {
from,
@ -237,13 +239,6 @@ async function buildTx(from, account, data) {
txOptions.flags = 0x01
} else if (newEpoch) {
const newKeysFile = `/keys/keys${newEpoch}.store`
const to = getAccountFromFile(newKeysFile).address
if (to === '') {
return { tx: null }
}
logger.info(`Building corresponding transaction for transferring all funds, nonce ${nonce}, recipient ${to}`)
const fee = await getFee()