Using environment development.
{
"jsonrpc": "2.0",
"method": "eth_coinbase",
"params": [],
"id": 1
}
< {
< "id": 1,
< "jsonrpc": "2.0",
< "result": "0xb735bf53abc79525a4f585a004a620d08cc66b27"
< }
Compiling Lotto.sol...
{
"jsonrpc": "2.0",
"method": "eth_getCompilers",
"params": [],
"id": 2
}
< {
< "id": 2,
< "jsonrpc": "2.0",
< "result": [
< "Solidity"
< ]
< }
{
"jsonrpc": "2.0",
"method": "eth_compileSolidity",
"params": [
"contract Lotto {\n \n uint constant public blocksPerRound = 5760;\n \n uint constant public ticketPrice = 100000000000000000;\n \n uint constant public blockReward = 5000000000000000000;\n\n function getBlocksPerRound() constant returns(uint){ return blocksPerRound; }\n function getTicketPrice() constant returns(uint){ return ticketPrice; }\n \n struct Round {\n address[] buyers;\n uint pot;\n uint ticketsCount;\n mapping(uint=>bool) isCashed;\n mapping(address=>uint) ticketsCountByBuyer;\n }\n mapping(uint => Round) rounds;\n \n function getRoundIndex() constant returns (uint){\n \n return block.number/blocksPerRound;\n }\n\n function getIsCashed(uint roundIndex,uint subpotIndex) constant returns (bool){\n \n return rounds[roundIndex].isCashed[subpotIndex];\n }\n\n\n function calculateWinner(uint roundIndex, uint subpotIndex) constant returns(address){\n \n var decisionBlockNumber = getDecisionBlockNumber(roundIndex,subpotIndex);\n \n if(decisionBlockNumber>block.number)\n return;\n \n var decisionBlockHash = getHashOfBlock(decisionBlockNumber);\n var winningTicketIndex = decisionBlockHash%rounds[roundIndex].ticketsCount;\n \n var ticketIndex = uint256(0);\n\n for(var buyerIndex = 0; buyerIndex<rounds[roundIndex].buyers.length; buyerIndex++){\n var buyer = rounds[roundIndex].buyers[buyerIndex];\n ticketIndex+=rounds[roundIndex].ticketsCountByBuyer[buyer];\n\n if(ticketIndex>winningTicketIndex){\n return buyer;\n }\n }\n\n }\n\n function getDecisionBlockNumber(uint roundIndex,uint subpotIndex) constant returns (uint){\n return ((roundIndex+1)_blocksPerRound)+subpotIndex;\n }\n\n function getSubpot(uint roundIndex) constant returns(uint){\n return rounds[roundIndex].pot/getSubpotsCount(roundIndex);\n }\n\n function getSubpotsCount(uint roundIndex) constant returns(uint){\n \n var subpotsCount = rounds[roundIndex].pot/blockReward;\n\n if(rounds[roundIndex].pot%blockReward>0)\n subpotsCount++;\n\n return subpotsCount;\n }\n\n function cash(uint roundIndex, uint subpotIndex){\n \n var subpotsCount = getSubpotsCount(roundIndex);\n\n if(subpotIndex>=subpotsCount)\n return;\n\n var decisionBlockNumber = getDecisionBlockNumber(roundIndex,subpotIndex);\n\n if(decisionBlockNumber>block.number)\n return;\n\n if(rounds[roundIndex].isCashed[subpotIndex])\n return;\n \n var winner = calculateWinner(roundIndex,subpotIndex); \n var subpot = getSubpot(roundIndex);\n\n var isSent = winner.send(subpot);\n\n if(!isSent) return;\n \n rounds[roundIndex].isCashed[subpotIndex] = true;\n }\n\n function getHashOfBlock(uint blockIndex) constant returns(uint){\n var blockhash = block.blockhash(blockIndex);\n return uint(blockhash);\n }\n \n function getBuyers(uint roundIndex,address buyer) constant returns (address[]){\n return rounds[roundIndex].buyers;\n }\n\n function getTicketsCountByBuyer(uint roundIndex,address buyer) constant returns (uint){\n return rounds[roundIndex].ticketsCountByBuyer[buyer];\n }\n\n function getPot(uint roundIndex) constant returns(uint){\n return rounds[roundIndex].pot;\n }\n\n function() {\n \n var roundIndex = getRoundIndex();\n var value = msg.value-(msg.value%ticketPrice);\n\n if(value==0) return;\n\n if(value<msg.value){\n msg.sender.send(msg.value-value);\n }\n \n var ticketsCount = value/ticketPrice;\n \n if(rounds[roundIndex].ticketsCountByBuyer[msg.sender]==0){\n var buyersLength = rounds[roundIndex].buyers.length++;\n rounds[roundIndex].buyers[buyersLength] = msg.sender;\n }\n\n rounds[roundIndex].ticketsCountByBuyer[msg.sender]+=ticketsCount;\n rounds[roundIndex].ticketsCount+=ticketsCount;\n \n rounds[roundIndex].pot+=value;\n \n }\n\n}"
],
"id": 3
}
< {
< "id": 3,
< "jsonrpc": "2.0",
< "result": {
< "Lotto": {
< "code": "0x6060604052610a7f806100136000396000f300606060405236156100c1576000357c01000000000000000000000000000000000000000000000000000000009004806328d3ad3f14610319578063305a762a14610340578063358d5dc21461036d578063459f93f71461039a57806346a2679a146103fb5780636572ae131461042257806367af1c81146104655780638089d0011461048657806386bb7121146104ad57806387bb7ae0146104ce57806393dafba2146104ef578063ce5566c514610516578063df2f0a4a1461052f576100c1565b6103175b60006000600060006100d5610580565b935067016345785d8a000034063403925060008314156100f457610311565b34831015610132573373ffffffffffffffffffffffffffffffffffffffff166000843403604051809050600060405180830381858888f19350505050505b67016345785d8a00008304915060006000600050600086815260200190815260200160002060005060040160005060003373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505414156102625760006000506000858152602001908152602001600020600050600001600050805480919060010190908154818355818115116101ff578183600052602060002091820191016101fe91906101e0565b808211156101fa57600081815060009055506001016101e0565b5090565b5b5050509050336000600050600086815260200190815260200160002060005060000160005082815481101561000257906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908302179055505b816000600050600086815260200190815260200160002060005060040160005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082828250540192505081905550816000600050600086815260200190815260200160002060005060020160008282825054019250508190555082600060005060008681526020019081526020016000206000506001016000828282505401925050819055505b50505050565b005b61032a600480359060200150610a51565b6040518082815260200191505060405180910390f35b6103576004803590602001803590602001506109f8565b6040518082815260200191505060405180910390f35b610384600480359060200180359060200150610591565b6040518082815260200191505060405180910390f35b6103b1600480359060200180359060200150610949565b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b61040c60048035906020015061078a565b6040518082815260200191505060405180910390f35b6104396004803590602001803590602001506105de565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610470600450610580565b6040518082815260200191505060405180910390f35b61049760048035906020015061092f565b6040518082815260200191505060405180910390f35b6104b860045061055c565b6040518082815260200191505060405180910390f35b6104d960045061056b565b6040518082815260200191505060405180910390f35b610500600480359060200150610752565b6040518082815260200191505060405180910390f35b61052d600480359060200180359060200150610803565b005b610546600480359060200180359060200150610739565b6040518082815260200191505060405180910390f35b60006116809050610568565b90565b600067016345785d8a0000905061057d565b90565b60006116804304905061058e565b90565b600060006000506000848152602001908152602001600020600050600301600050600083815260200190815260200160002060009054906101000a900460ff1690506105d8565b92915050565b60006000600060006000600060006105f68989610739565b9550438611156106055761072d565b61060e8661092f565b9450600060005060008a8152602001908152602001600020600050600201600050548506935060009250600091505b600060005060008a8152602001908152602001600020600050600001600050548260ff16101561072c57600060005060008a815260200190815260200160002060005060000160005082815481101561000257906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060005060008a815260200190815260200160002060005060040160005060008273ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050548301925082508383111561071e5780965061072d565b5b818060010192505061063d565b5b50505050505092915050565b600081611680600185010201905061074c565b92915050565b600061075d8261078a565b6000600050600084815260200190815260200160002060005060010160005054049050610785565b919050565b60006000674563918244f4000060006000506000858152602001908152602001600020600050600101600050540490506000674563918244f4000060006000506000868152602001908152602001600020600050600101600050540611156107f55780806001019150505b8091506107fd565b50919050565b600060006000600060006108168761078a565b9450848610151561082657610926565b6108308787610739565b93504384111561083f57610926565b60006000506000888152602001908152602001600020600050600301600050600087815260200190815260200160002060009054906101000a900460ff161561088757610926565b61089187876105de565b925061089c87610752565b91508273ffffffffffffffffffffffffffffffffffffffff16600083604051809050600060405180830381858888f1935050505090508015156108de57610926565b600160006000506000898152602001908152602001600020600050600301600050600088815260200190815260200160002060006101000a81548160ff021916908302179055505b50505050505050565b600060008240905080600190049150610943565b50919050565b6020604051908101604052806000815260200150600060005060008481526020019081526020016000206000506000016000508054806020026020016040519081016040528092919081815260200182805480156109e657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109b2575b505050505090506109f2565b92915050565b60006000600050600084815260200190815260200160002060005060040160005060008373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549050610a4b565b92915050565b600060006000506000838152602001908152602001600020600050600101600050549050610a7a565b91905056",
< "info": {
< "source": "contract Lotto {\n \n uint constant public blocksPerRound = 5760;\n \n uint constant public ticketPrice = 100000000000000000;\n \n uint constant public blockReward = 5000000000000000000;\n\n function getBlocksPerRound() constant returns(uint){ return blocksPerRound; }\n function getTicketPrice() constant returns(uint){ return ticketPrice; }\n \n struct Round {\n address[] buyers;\n uint pot;\n uint ticketsCount;\n mapping(uint=>bool) isCashed;\n mapping(address=>uint) ticketsCountByBuyer;\n }\n mapping(uint => Round) rounds;\n \n function getRoundIndex() constant returns (uint){\n \n return block.number/blocksPerRound;\n }\n\n function getIsCashed(uint roundIndex,uint subpotIndex) constant returns (bool){\n \n return rounds[roundIndex].isCashed[subpotIndex];\n }\n\n\n function calculateWinner(uint roundIndex, uint subpotIndex) constant returns(address){\n \n var decisionBlockNumber = getDecisionBlockNumber(roundIndex,subpotIndex);\n \n if(decisionBlockNumber>block.number)\n return;\n \n var decisionBlockHash = getHashOfBlock(decisionBlockNumber);\n var winningTicketIndex = decisionBlockHash%rounds[roundIndex].ticketsCount;\n \n var ticketIndex = uint256(0);\n\n for(var buyerIndex = 0; buyerIndex<rounds[roundIndex].buyers.length; buyerIndex++){\n var buyer = rounds[roundIndex].buyers[buyerIndex];\n ticketIndex+=rounds[roundIndex].ticketsCountByBuyer[buyer];\n\n if(ticketIndex>winningTicketIndex){\n return buyer;\n }\n }\n\n }\n\n function getDecisionBlockNumber(uint roundIndex,uint subpotIndex) constant returns (uint){\n return ((roundIndex+1)_blocksPerRound)+subpotIndex;\n }\n\n function getSubpot(uint roundIndex) constant returns(uint){\n return rounds[roundIndex].pot/getSubpotsCount(roundIndex);\n }\n\n function getSubpotsCount(uint roundIndex) constant returns(uint){\n \n var subpotsCount = rounds[roundIndex].pot/blockReward;\n\n if(rounds[roundIndex].pot%blockReward>0)\n subpotsCount++;\n\n return subpotsCount;\n }\n\n function cash(uint roundIndex, uint subpotIndex){\n \n var subpotsCount = getSubpotsCount(roundIndex);\n\n if(subpotIndex>=subpotsCount)\n return;\n\n var decisionBlockNumber = getDecisionBlockNumber(roundIndex,subpotIndex);\n\n if(decisionBlockNumber>block.number)\n return;\n\n if(rounds[roundIndex].isCashed[subpotIndex])\n return;\n \n var winner = calculateWinner(roundIndex,subpotIndex); \n var subpot = getSubpot(roundIndex);\n\n var isSent = winner.send(subpot);\n\n if(!isSent) return;\n \n rounds[roundIndex].isCashed[subpotIndex] = true;\n }\n\n function getHashOfBlock(uint blockIndex) constant returns(uint){\n var blockhash = block.blockhash(blockIndex);\n return uint(blockhash);\n }\n \n function getBuyers(uint roundIndex,address buyer) constant returns (address[]){\n return rounds[roundIndex].buyers;\n }\n\n function getTicketsCountByBuyer(uint roundIndex,address buyer) constant returns (uint){\n return rounds[roundIndex].ticketsCountByBuyer[buyer];\n }\n\n function getPot(uint roundIndex) constant returns(uint){\n return rounds[roundIndex].pot;\n }\n\n function() {\n \n var roundIndex = getRoundIndex();\n var value = msg.value-(msg.value%ticketPrice);\n\n if(value==0) return;\n\n if(value<msg.value){\n msg.sender.send(msg.value-value);\n }\n \n var ticketsCount = value/ticketPrice;\n \n if(rounds[roundIndex].ticketsCountByBuyer[msg.sender]==0){\n var buyersLength = rounds[roundIndex].buyers.length++;\n rounds[roundIndex].buyers[buyersLength] = msg.sender;\n }\n\n rounds[roundIndex].ticketsCountByBuyer[msg.sender]+=ticketsCount;\n rounds[roundIndex].ticketsCount+=ticketsCount;\n \n rounds[roundIndex].pot+=value;\n \n }\n\n}",
< "language": "Solidity",
< "languageVersion": "0",
< "compilerVersion": "0.1.1",
< "abiDefinition": [
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< }
< ],
< "name": "getPot",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< },
< {
< "name": "buyer",
< "type": "address"
< }
< ],
< "name": "getTicketsCountByBuyer",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< },
< {
< "name": "subpotIndex",
< "type": "uint256"
< }
< ],
< "name": "getIsCashed",
< "outputs": [
< {
< "name": "",
< "type": "bool"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< },
< {
< "name": "buyer",
< "type": "address"
< }
< ],
< "name": "getBuyers",
< "outputs": [
< {
< "name": "",
< "type": "address[]"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< }
< ],
< "name": "getSubpotsCount",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< },
< {
< "name": "subpotIndex",
< "type": "uint256"
< }
< ],
< "name": "calculateWinner",
< "outputs": [
< {
< "name": "",
< "type": "address"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [],
< "name": "getRoundIndex",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "blockIndex",
< "type": "uint256"
< }
< ],
< "name": "getHashOfBlock",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [],
< "name": "getBlocksPerRound",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [],
< "name": "getTicketPrice",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< }
< ],
< "name": "getSubpot",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< },
< {
< "constant": false,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< },
< {
< "name": "subpotIndex",
< "type": "uint256"
< }
< ],
< "name": "cash",
< "outputs": [],
< "type": "function"
< },
< {
< "constant": true,
< "inputs": [
< {
< "name": "roundIndex",
< "type": "uint256"
< },
< {
< "name": "subpotIndex",
< "type": "uint256"
< }
< ],
< "name": "getDecisionBlockNumber",
< "outputs": [
< {
< "name": "",
< "type": "uint256"
< }
< ],
< "type": "function"
< }
< ],
< "userDoc": {
< "methods": {}
< },
< "developerDoc": {
< "methods": {}
< }
< }
< }
< }
< }
Sending Lotto.sol to the network...
{
"jsonrpc": "2.0",
"method": "eth_sendTransaction",
"params": [
{
"from": "0xb735bf53abc79525a4f585a004a620d08cc66b27",
"gas": "0x2fefd8",
"gasPrice": "0xe8d4a51000",
"data": "0x6060604052610a7f806100136000396000f300606060405236156100c1576000357c01000000000000000000000000000000000000000000000000000000009004806328d3ad3f14610319578063305a762a14610340578063358d5dc21461036d578063459f93f71461039a57806346a2679a146103fb5780636572ae131461042257806367af1c81146104655780638089d0011461048657806386bb7121146104ad57806387bb7ae0146104ce57806393dafba2146104ef578063ce5566c514610516578063df2f0a4a1461052f576100c1565b6103175b60006000600060006100d5610580565b935067016345785d8a000034063403925060008314156100f457610311565b34831015610132573373ffffffffffffffffffffffffffffffffffffffff166000843403604051809050600060405180830381858888f19350505050505b67016345785d8a00008304915060006000600050600086815260200190815260200160002060005060040160005060003373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000505414156102625760006000506000858152602001908152602001600020600050600001600050805480919060010190908154818355818115116101ff578183600052602060002091820191016101fe91906101e0565b808211156101fa57600081815060009055506001016101e0565b5090565b5b5050509050336000600050600086815260200190815260200160002060005060000160005082815481101561000257906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908302179055505b816000600050600086815260200190815260200160002060005060040160005060003373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082828250540192505081905550816000600050600086815260200190815260200160002060005060020160008282825054019250508190555082600060005060008681526020019081526020016000206000506001016000828282505401925050819055505b50505050565b005b61032a600480359060200150610a51565b6040518082815260200191505060405180910390f35b6103576004803590602001803590602001506109f8565b6040518082815260200191505060405180910390f35b610384600480359060200180359060200150610591565b6040518082815260200191505060405180910390f35b6103b1600480359060200180359060200150610949565b60405180806020018281038252838181518152602001915080519060200190602002808383829060006004602084601f0104600302600f01f1509050019250505060405180910390f35b61040c60048035906020015061078a565b6040518082815260200191505060405180910390f35b6104396004803590602001803590602001506105de565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610470600450610580565b6040518082815260200191505060405180910390f35b61049760048035906020015061092f565b6040518082815260200191505060405180910390f35b6104b860045061055c565b6040518082815260200191505060405180910390f35b6104d960045061056b565b6040518082815260200191505060405180910390f35b610500600480359060200150610752565b6040518082815260200191505060405180910390f35b61052d600480359060200180359060200150610803565b005b610546600480359060200180359060200150610739565b6040518082815260200191505060405180910390f35b60006116809050610568565b90565b600067016345785d8a0000905061057d565b90565b60006116804304905061058e565b90565b600060006000506000848152602001908152602001600020600050600301600050600083815260200190815260200160002060009054906101000a900460ff1690506105d8565b92915050565b60006000600060006000600060006105f68989610739565b9550438611156106055761072d565b61060e8661092f565b9450600060005060008a8152602001908152602001600020600050600201600050548506935060009250600091505b600060005060008a8152602001908152602001600020600050600001600050548260ff16101561072c57600060005060008a815260200190815260200160002060005060000160005082815481101561000257906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600060005060008a815260200190815260200160002060005060040160005060008273ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050548301925082508383111561071e5780965061072d565b5b818060010192505061063d565b5b50505050505092915050565b600081611680600185010201905061074c565b92915050565b600061075d8261078a565b6000600050600084815260200190815260200160002060005060010160005054049050610785565b919050565b60006000674563918244f4000060006000506000858152602001908152602001600020600050600101600050540490506000674563918244f4000060006000506000868152602001908152602001600020600050600101600050540611156107f55780806001019150505b8091506107fd565b50919050565b600060006000600060006108168761078a565b9450848610151561082657610926565b6108308787610739565b93504384111561083f57610926565b60006000506000888152602001908152602001600020600050600301600050600087815260200190815260200160002060009054906101000a900460ff161561088757610926565b61089187876105de565b925061089c87610752565b91508273ffffffffffffffffffffffffffffffffffffffff16600083604051809050600060405180830381858888f1935050505090508015156108de57610926565b600160006000506000898152602001908152602001600020600050600301600050600088815260200190815260200160002060006101000a81548160ff021916908302179055505b50505050505050565b600060008240905080600190049150610943565b50919050565b6020604051908101604052806000815260200150600060005060008481526020019081526020016000206000506000016000508054806020026020016040519081016040528092919081815260200182805480156109e657602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109b2575b505050505090506109f2565b92915050565b60006000600050600084815260200190815260200160002060005060040160005060008373ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600050549050610a4b565b92915050565b600060006000506000838152602001908152602001600020600050600101600050549050610a7a565b91905056"
}
],
"id": 4
}
< {
< "id": 4,
< "jsonrpc": "2.0",
< "error": {
< "code": -32603,
< "message": "Insufficient funds for gas * price + value"
< }
< }
ERROR sending contract:
Error: Insufficient funds for gas * price + value
at Object.module.exports.InvalidResponse (/usr/local/lib/node_modules/truffle/node_modules/web3/lib/web3/errors.js:35:16)
at /usr/local/lib/node_modules/truffle/node_modules/web3/lib/web3/requestmanager.js:101:36
at /usr/local/lib/node_modules/truffle/lib/config.es6:337:11
at [object Object].request.onreadystatechange (/usr/local/lib/node_modules/truffle/node_modules/web3/lib/web3/httpprovider.js:114:13)
at [object Object].dispatchEvent (/usr/local/lib/node_modules/truffle/node_modules/web3/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:572:25)
at setState (/usr/local/lib/node_modules/truffle/node_modules/web3/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:591:14)
at IncomingMessage. (/usr/local/lib/node_modules/truffle/node_modules/web3/node_modules/xmlhttprequest/lib/XMLHttpRequest.js:431:13)
at IncomingMessage.emit (events.js:129:20)
at _stream_readable.js:908:16
at process._tickDomainCallback (node.js:381:11)
at Function.module.exports.loopWhile (/usr/local/lib/node_modules/truffle/node_modules/deasync/index.js:57:21)
at /usr/local/lib/node_modules/truffle/node_modules/deasync/index.js:29:18
at runTask (/usr/local/lib/node_modules/truffle/truffle.es6:41:5)
at Object. (/usr/local/lib/node_modules/truffle/truffle.es6:256:14)
at Module._compile (module.js:460:26)
at normalLoader (/usr/local/lib/node_modules/truffle/node_modules/babel/node_modules/babel-core/lib/api/register/node.js:199:5)
at Object.require.extensions.(anonymous function) as .es6
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at Object. (/usr/local/lib/node_modules/truffle/node_modules/babel/lib/_babel-node.js:144:25)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Function.Module.runMain (module.js:501:10)
at startup (node.js:129:16)
at node.js:814:3