diff --git a/data/bin01.txt b/data/bin01.txt new file mode 100644 index 0000000..1491da6 --- /dev/null +++ b/data/bin01.txt @@ -0,0 +1 @@ +0x00000002000100030008000d00120000002b00300035003a0042004a00000001004b00000000005000000055006e00000000003a00140000000000000000000a00000087003500300042003a004a00020002008c0000000000500000009100aa00000000003a00140000000000000000001402000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f14213b68bcec2be0c2b8c91d6336e65267dd2095227915ca278541a953a78044de5aa6aff3c7b37000000000000000000000000000000000000000000000000000000000000004300411b9472083709ca53f7705985a9d61be1638e2abfb1094559dd8f45cc5ed404dc1a546535cab18d5f501098774a8712696dc68aedb2b999c081cee3307906c39b0e0096d76d19f067e625318b34971e9bbf0a1f818676cf16ef2b2dec2bc2b3d64995f1a86985c5e98e687ffb6c88ed0422974b573cea2713d0345225f71b0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000003635c9adc5dea000005bc5ba56d5593396c0d3753d8d76c9dca5cc490670e377c489a80ec8fe28c07ffb38556e89402ca16874acd8000000000000000000000000000000000000000000000000000000000000004300411cb61748845e31af64293e3694434ef68945d9b2aef765674417859082ce0d6b9374058469e3081568141951a418851784422be0488a9f64745a2463194bd7090300000000000000000000000000000000000000000000000000000000000000004300411b59398761469a1348fb61fd7dd2d62fe8505b95b23bc48aadc52a7879c27f02870a3c960cf6bfa1b437c9bc347980bbdd123144f5f6591ba3a007258121dec00200e2183d083a5de89862f9f6959533c372a09dd4898225724e10fc1dc3ad675a010178b4e5f517aef5000000000000000000000000000000000000000000000000000000000000004300411c4f63e6b293898e0b39618fe7a6b9708d4f3f7c74043b4fb9bf896078d3c2ba18266bed997a13a01ff5c79d28f75e169598779ec2731b28ec4c4b8165e5edcd9000000000000000000000000000000000000000000000000000000000000000004300411b3c1d5fa6913833aeba9dbd4fc0c7cec7dd07ee5c7a1df4801b264d4168136e0375c8549f90745c6eb73700abd2ba9333450bd3da415608d59f8b00270a451c5f00 diff --git a/data/param01.json b/data/param01.json new file mode 100644 index 0000000..16cf3df --- /dev/null +++ b/data/param01.json @@ -0,0 +1,3 @@ +{ "bs": "000000020001000300000000000000000008000d00120017001f00270000000000080000000000280000002d002d000000000045000000000000002800000000004d0012000d001f0017002700010002004d00000000002800000052005200000000004500000000000000280000020001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001b978a1d302335a6f2ebe4b8823b5e17c3c84135cd36128815ebe0b44d0374649bad2721b8751beff079e0612e869197c5f4c7d0a95df570b163232b0000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000002386f26fc100005be5af004bad3053d574cd54513babe21db3f09bea1d387d00000000000000000000000000000000000000000000000000000000000000408198f8e0247329affa5ebbdd9e92b6ff2911698f0e6b35aaf6fa87a668aa1f9071d6ae22201fb670d921f1e6593e753afedf7ababdbeacd7daebbe749782a4e20000000000000000000000000000000000000000000000008ac7230489e80000b1018949b241d76a1ab2094f473e9befeabb5ead00000000000000000000000000000000000000000000000000000000000000407ca437000b3ab0a26218376b83aa12eb6fb617f0204e86bf165dd754212720ec30475b9f9a16c1874d24b6049cf25372633463d7e25a8e7f5a0819e79c79406800", + "txOrigin": "0x4bad3053d574cd54513babe21db3f09bea1d387d" +} diff --git a/package-lock.json b/package-lock.json index 207be95..9a5ac90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "protocol2-js", - "version": "0.1.25", + "version": "0.2.18", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -708,9 +708,9 @@ "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==" }, "es6-promisify": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.0.tgz", - "integrity": "sha512-8Tbqjrb8lC85dd81haajYwuRmiU2rkqNAFnlvQOJeeKqdUloIlI+JcUqeJruV4rCm5Y7oNU7jfs2FbmxhRR/2g==" + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-6.0.1.tgz", + "integrity": "sha512-J3ZkwbEnnO+fGAKrjVpeUAnZshAdfZvbhQpqfIH9kSAspReRC4nJnu8ewm55b4y9ElyeuhCTzJD0XiH8Tsbhlw==" }, "escape-html": { "version": "1.0.3", diff --git a/package.json b/package.json index c862c10..ccc05e5 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "bignumber.js": "^4.1.0", "bitwise-xor": "0.0.0", "bn.js": "^4.11.8", - "es6-promisify": "^6.0.0", + "es6-promisify": "^6.0.1", "ethereum-tx-decoder": "^2.0.1", "ethereumjs-abi": "^0.6.5", "ethereumjs-util": "^5.2.0", diff --git a/src/exchange_deserializer.ts b/src/exchange_deserializer.ts index 3085803..057eca9 100644 --- a/src/exchange_deserializer.ts +++ b/src/exchange_deserializer.ts @@ -1,3 +1,4 @@ +import assert = require("assert"); import { BigNumber } from "bignumber.js"; import BN = require("bn.js"); import abi = require("ethereumjs-abi"); @@ -112,7 +113,10 @@ export class ExchangeDeserializer { tokenRecipient: this.nextAddress(), walletSplitPercentage: this.nextUint16(), }; - order.feeToken = order.feeToken ? order.feeToken : this.context.lrcAddress; + + if (this.context) { + order.feeToken = order.feeToken ? order.feeToken : this.context.lrcAddress; + } order.tokenRecipient = order.tokenRecipient ? order.tokenRecipient : order.owner; return order; } diff --git a/src/main.ts b/src/main.ts index 809aa52..a341d9e 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,53 +3,46 @@ import { logDebug } from "./logs"; import { ProtocolSimulator } from "./protocol_simulator"; import { RingsInfo } from "./types"; -function parseArgs(): [boolean, string] { +async function main() { const args = process.argv.slice(2); - let isBinary = true; - let ringData = ""; - if (args.length === 0) { - throw new Error("error: no ringData found"); + console.log("args:", args ); + + if (args.length < 2) { + throw new Error("error: not enough params."); } - if (args[0] === "-f") { - const fileName = args[1]; - const fileContent = fs.readFileSync(fileName, "utf8"); + const fileName = args[1]; + const fileContent = fs.readFileSync(fileName, "utf8"); + + if (args[0] === "--decode-param") { try { - const ringsInfo: RingsInfo = JSON.parse(fileContent); - isBinary = false; + const paramInfo: any = JSON.parse(fileContent); + console.log(paramInfo); + + const protocolSimulator = new ProtocolSimulator(undefined); + const ringsInfo = protocolSimulator.deserialize(paramInfo.bs, paramInfo.txOrigin); + console.log("deserialized ringsInfo: ", ringsInfo); } catch (err) { - ringData = fileContent; + console.log(err); } - } else if (args[0] === "-b") { - const binData = args[1]; - logDebug(binData); - } else { - if (args[0].startsWith("-")) { - throw new Error("error: invalid argument:" + args[0]); - } else { - ringData = args[0]; - } - } + } else if (args[0] === "--encode-rings") { + let ringsInfo: RingsInfo; + ringsInfo = JSON.parse(fileContent); + console.log("ringsInfo:", ringsInfo); + throw new Error("Not implemented yet."); - return [isBinary, ringData]; -} - -async function main() { - const [isBinData, data] = parseArgs(); - let ringsInfo: RingsInfo; - - const protocolSimulator = new ProtocolSimulator(undefined); - if (isBinData) { - logDebug("receive binary data, deserializing..."); - ringsInfo = protocolSimulator.deserialize(data, ""); - logDebug("deserialize result:", ringsInfo); + // const report = await protocolSimulator.simulateAndReport(ringsInfo); + } else if (args[0] === "--decode-simulate") { + try { + const paramInfo: any = JSON.parse(fileContent); + const protocolSimulator = new ProtocolSimulator(undefined); + const ringsInfo = protocolSimulator.deserialize(paramInfo.bs, paramInfo.txOrigin); + console.log("deserialized ringsInfo: ", ringsInfo); + } catch (err) { + console.log(err); + } } else { - ringsInfo = JSON.parse(data); - logDebug("receive ringsInfo data:", ringsInfo); + throw new Error("error: invalid argument:" + args); } - - logDebug("run simulator and report:"); - const report = await protocolSimulator.simulateAndReport(ringsInfo); - logDebug(report); } main(); diff --git a/src/multihash.ts b/src/multihash.ts index bf40712..56f7a45 100644 --- a/src/multihash.ts +++ b/src/multihash.ts @@ -1,6 +1,6 @@ import { BigNumber } from "bignumber.js"; import BN = require("bn.js"); -import promisify = require("es6-promisify"); +import { promisify } from "es6-promisify"; import ABI = require("ethereumjs-abi"); import ethUtil = require("ethereumjs-util"); import Web3 = require("web3"); diff --git a/testMain.sh b/testMain.sh new file mode 100755 index 0000000..c5a1755 --- /dev/null +++ b/testMain.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +cd . + +npm start -- --decode-param data/param01.json