123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- const PouchDB = require('pouchdb')
- // const moment = require('moment')
- // const superagent = require('superagent')
- const compiler = require('solc')
- /* Set Slack bot token. */
- const dbAuth = process.env.DB_AUTH
- /* Initialize database. */
- const db = new PouchDB(`http://apecs:${dbAuth}@localhost:5984/projects`)
- /**
- * Solidity Compiler
- */
- const solc = async function (req, res) {
- console.log('\nSTARTED SOLC');
- /* Set body. */
- const body = req.body
- console.log('\nBODY', body)
- /* Validate body. */
- if (!body) {
- /* Set status code. */
- res.status(400)
- return res.json({
- error: 'A request BODY is required with this request.'
- })
- }
- // const path = require('path')
- // const fs = require('fs')
- // const solc = require('solc')
- //
- // const sample = path.resolve(__dirname, 'contracts', 'hello.sol')
- // const source = fs.readFileSync(sample, 'UTF-8')
- // console.log('\nSOURCE', source)
- //
- // // const compiled = solc.compile(source, 1)
- //
- // var input = {
- // language: 'Solidity',
- // sources: {
- // 'hello.sol' : {
- // content: source
- // }
- // },
- // settings: {
- // outputSelection: {
- // '*': {
- // '*': [ '*' ]
- // }
- // }
- // }
- // };
- //
- // const output = JSON.parse(solc.compile(JSON.stringify(input)))
- // console.log('\nOUTPUT', output)
- //
- // const details = output.contracts['hello.sol']['Hello']
- // console.log('\nDETAILS', details)
- //
- // const bytecode = details.evm.bytecode.object
- // console.log('\nBYTECODE\n', bytecode)
- //
- // const deployedBytecode = details.evm.deployedBytecode.object
- // console.log('\nBYTECODE MATCH', bytecode == deployedBytecode)
- //
- // if (bytecode != deployedBytecode) {
- // console.log('\nDEPLOYED BYTECODE\n', deployedBytecode)
- //
- // }
- const input = {
- language: 'Solidity',
- sources: {
- 'hi-there.sol': {
- content: body.source
- }
- },
- settings: {
- outputSelection: {
- '*': {
- '*': ['*']
- }
- }
- }
- }
- let output
- try {
- output = JSON.parse(compiler.compile(JSON.stringify(input)))
- // `output` here contains the JSON output as specified in the documentation
- for (var contractName in output.contracts['test.sol']) {
- console.log(
- contractName +
- ': ' +
- output.contracts['test.sol'][contractName].evm.bytecode.object
- );
- }
- } catch (err) {
- console.error(err)
- }
- // solc.loadRemoteVersion('0.4.21+commit.dfe3193c', (_err, _solc) => {
- // if (_err) {
- // console.error('SOMETHING WENT WRONG', _err)
- // } else {
- // // NOTE: Use `solcSnapshot` here with the same interface `solc` has
- // const compiled = JSON.parse(_solc.compile(JSON.stringify(input)))
- // console.log('\nCOMPILED', compiled)
- // }
- // })
- //
- console.log('OUTPUT', output)
- /* Return all output. */
- res.json(output)
- }
- module.exports = solc
|