2019-08-22 15:25:26 +00:00
|
|
|
|
|
|
|
async function deployEscrowContract(eth) {
|
|
|
|
let accounts = await eth.getAccounts();
|
|
|
|
|
|
|
|
// pragma solidity >=0.4.22 <0.6.0;
|
|
|
|
// contract Escrow {
|
|
|
|
// event Created(uint indexed escrowId, address buyer, address seller);
|
|
|
|
// function createEscrow(uint escrowId, address buyer, address seller) external {
|
|
|
|
// emit Created(escrowId, buyer, seller);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
let abi = [
|
|
|
|
{
|
|
|
|
"constant": false,
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"name": "escrowId",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "buyer",
|
|
|
|
"type": "address"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "seller",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "createEscrow",
|
|
|
|
"outputs": [],
|
|
|
|
"payable": false,
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"anonymous": false,
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"indexed": true,
|
|
|
|
"name": "escrowId",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"indexed": false,
|
|
|
|
"name": "buyer",
|
|
|
|
"type": "address"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"indexed": false,
|
|
|
|
"name": "seller",
|
|
|
|
"type": "address"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "Created",
|
|
|
|
"type": "event"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
var contract = new eth.Contract(abi)
|
|
|
|
let instance = await contract.deploy({
|
|
|
|
data: '0x608060405234801561001057600080fd5b50610184806100206000396000f3fe60806040526004361061003b576000357c01000000000000000000000000000000000000000000000000000000009004806378015cf414610040575b600080fd5b34801561004c57600080fd5b506100b96004803603606081101561006357600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506100bb565b005b827fcbd6f84bfed2ee8cc01ea152b5d9f7126a72c410dbc5ab04c486a5800627b1908383604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a250505056fea165627a7a72305820cc868ec126578f5508ee248fb823cd9f1ac6deb0562091cdf31843840b2a56410029',
|
|
|
|
arguments: []
|
|
|
|
}).send({
|
|
|
|
from: accounts[0],
|
|
|
|
gas: '4700000'
|
|
|
|
})
|
|
|
|
return instance
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async function deployRatingContract(eth) {
|
|
|
|
let accounts = await eth.getAccounts();
|
|
|
|
|
|
|
|
// pragma solidity >=0.4.22 <0.6.0;
|
|
|
|
// contract Transaction {
|
|
|
|
// event Rating(uint indexed escrowId, uint rating);
|
|
|
|
// function doRating(uint escrowId, uint rating) external {
|
|
|
|
// emit Rating(escrowId, rating);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
let abi = [
|
|
|
|
{
|
|
|
|
"constant": false,
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"name": "escrowId",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "rating",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "doRating",
|
|
|
|
"outputs": [],
|
|
|
|
"payable": false,
|
|
|
|
"stateMutability": "nonpayable",
|
|
|
|
"type": "function"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"anonymous": false,
|
|
|
|
"inputs": [
|
|
|
|
{
|
|
|
|
"indexed": true,
|
|
|
|
"name": "escrowId",
|
|
|
|
"type": "uint256"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"indexed": false,
|
|
|
|
"name": "rating",
|
|
|
|
"type": "uint256"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"name": "Rating",
|
|
|
|
"type": "event"
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
2019-09-09 01:35:05 +00:00
|
|
|
var contract = new eth.Contract(abi);
|
|
|
|
|
2019-08-22 15:25:26 +00:00
|
|
|
let instance = await contract.deploy({
|
|
|
|
data: '0x608060405234801561001057600080fd5b5060e78061001f6000396000f3fe6080604052600436106039576000357c010000000000000000000000000000000000000000000000000000000090048063f60781a914603e575b600080fd5b348015604957600080fd5b50607d60048036036040811015605e57600080fd5b810190808035906020019092919080359060200190929190505050607f565b005b817ffdefdf8d82459f7b1eb157e5c44cbe6ee73d8ddd387511fe3622a3ee663b4697826040518082815260200191505060405180910390a2505056fea165627a7a7230582067833697a0e2bccb8bd624c0b06b2183641addb24f7931d8ec3979982bb663790029',
|
|
|
|
arguments: []
|
|
|
|
}).send({
|
|
|
|
from: accounts[0],
|
|
|
|
gas: '4700000'
|
|
|
|
})
|
|
|
|
return instance
|
|
|
|
}
|
2019-09-09 01:35:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
const mine = (web3) => {
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
web3.currentProvider.send({
|
|
|
|
jsonrpc: '2.0',
|
|
|
|
method: 'evm_mine',
|
|
|
|
id: new Date().getTime()
|
|
|
|
}, (err, result) => {
|
|
|
|
if (err) { return reject(err) }
|
|
|
|
return resolve(result)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
2019-08-22 15:25:26 +00:00
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
deployEscrowContract,
|
2019-09-09 01:35:05 +00:00
|
|
|
deployRatingContract,
|
|
|
|
mine
|
2019-08-22 15:25:26 +00:00
|
|
|
};
|
|
|
|
|