@exodus/ethereum-lib 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE.md ADDED
File without changes
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = createContract;
7
+ exports.MIGRATION_CONTRACT = void 0;
8
+
9
+ var _ethereumjsUtil = _interopRequireDefault(require("ethereumjs-util"));
10
+
11
+ var _erc = _interopRequireDefault(require("./erc20"));
12
+
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+
15
+ // TODO: possibly move this to @exodus/assets so that we have all connected contracts in one place
16
+ // to change easily of we ever add support for testnets.
17
+ const MIGRATION_CONTRACT = '0x25601b0f6ba68197de2a7ae3c11ab2c965221e44';
18
+ exports.MIGRATION_CONTRACT = MIGRATION_CONTRACT;
19
+
20
+ function createContract(addresses, currency) {
21
+ const {
22
+ addresses: daiAddresses,
23
+ ...rest
24
+ } = (0, _erc.default)(addresses, currency);
25
+ daiAddresses.migration = MIGRATION_CONTRACT; // const APPROVE_ALL_METHOD_ID = ethUtil.bufferToHex(ethUtil.sha3('approve(address)').slice(0, 4))
26
+
27
+ const APPROVE_ALL_METHOD_ID = '0xdaea85c5'; // TODO: not verified:
28
+ // const APPROVE_ALL_EVENT_ID = ethUtil.bufferToHex(ethUtil.sha3('Approve(address,address)'))
29
+
30
+ const APPROVE_ALL_EVENT_ID = '0xf37f546c25e850257cc0c94f92bec94a17e2f0e884ddda268a25d8144b70eb6a'; // console.log('DAI aproveAll ids:', APPROVE_ALL_METHOD_ID, APPROVE_ALL_EVENT_ID)
31
+
32
+ const approveAll = {
33
+ METHOD_ID: APPROVE_ALL_METHOD_ID,
34
+ EVENT_ID: APPROVE_ALL_EVENT_ID,
35
+
36
+ build(address) {
37
+ return Buffer.concat([_ethereumjsUtil.default.toBuffer(APPROVE_ALL_METHOD_ID), _ethereumjsUtil.default.zeros(12), _ethereumjsUtil.default.toBuffer(address)]);
38
+ },
39
+
40
+ test(data) {
41
+ return _ethereumjsUtil.default.bufferToHex(data.slice(0, 4)) === APPROVE_ALL_METHOD_ID;
42
+ },
43
+
44
+ parse(data) {
45
+ if (!approveAll.test(data)) throw new Error('It is not approve data');
46
+ return {
47
+ address: _ethereumjsUtil.default.bufferToHex(data.slice(16, 36))
48
+ };
49
+ }
50
+
51
+ }; // const SWAP_SAI_TO_DAI_METHOD_ID = ethUtil.bufferToHex(ethUtil.sha3('swapSaiToDai(uint256)').slice(0, 4))
52
+
53
+ const SWAP_SAI_TO_DAI_METHOD_ID = '0xfbabdebd'; // TODO: not verified:
54
+ // const SWAP_SAI_TO_DAI_EVENT_ID = ethUtil.bufferToHex(ethUtil.sha3('SwapSaiToDai(address,uint256)'))
55
+
56
+ const SWAP_SAI_TO_DAI_EVENT_ID = '0xa51ac4672c9a04d2246dc156eb5f2f522e6d9b78105ae85d4c131f600e2e4df6'; // console.log('DAI swapSaiToDai ids:', SWAP_SAI_TO_DAI_METHOD_ID, SWAP_SAI_TO_DAI_EVENT_ID)
57
+ // This operation must be sent to the migration contract
58
+
59
+ const swapSaiToDai = {
60
+ METHOD_ID: SWAP_SAI_TO_DAI_METHOD_ID,
61
+ EVENT_ID: SWAP_SAI_TO_DAI_EVENT_ID,
62
+
63
+ build(bufAmount) {
64
+ return Buffer.concat([_ethereumjsUtil.default.toBuffer(SWAP_SAI_TO_DAI_METHOD_ID), _ethereumjsUtil.default.zeros(32 - bufAmount.length), bufAmount]);
65
+ },
66
+
67
+ test(data) {
68
+ return _ethereumjsUtil.default.bufferToHex(data.slice(0, 4)) === SWAP_SAI_TO_DAI_METHOD_ID;
69
+ },
70
+
71
+ parse(data) {
72
+ if (!swapSaiToDai.test(data)) throw new Error('It is not swapSaiToDai data');
73
+ return {
74
+ amount: currency.baseUnit(_ethereumjsUtil.default.bufferToHex(data.slice(4, 36)))
75
+ };
76
+ }
77
+
78
+ };
79
+ return {
80
+ addresses: daiAddresses,
81
+ ...rest,
82
+ approveAll,
83
+ swapSaiToDai
84
+ };
85
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = createContract;
7
+
8
+ var _ethereumjsUtil = _interopRequireDefault(require("ethereumjs-util"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ function createContract(addresses, currency) {
13
+ // First 4 bytes of Keccak256('transfer(address,uint256)')
14
+ // const TRANSFER_METHOD_ID = ethUtil.bufferToHex(ethUtil.sha3('transfer(address,uint256)').slice(0, 4))
15
+ const TRANSFER_METHOD_ID = '0xa9059cbb'; // Keccak256('Transfer(address,address,uint256)')
16
+ // const TRANSFER_EVENT_ID = ethUtil.bufferToHex(ethUtil.sha3('Transfer(address,address,uint256)'))
17
+
18
+ const TRANSFER_EVENT_ID = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
19
+ const transfer = {
20
+ METHOD_ID: TRANSFER_METHOD_ID,
21
+ EVENT_ID: TRANSFER_EVENT_ID,
22
+
23
+ build(to, bufAmount) {
24
+ return Buffer.concat([_ethereumjsUtil.default.toBuffer(TRANSFER_METHOD_ID), _ethereumjsUtil.default.zeros(12), _ethereumjsUtil.default.toBuffer(to), _ethereumjsUtil.default.zeros(32 - bufAmount.length), bufAmount]);
25
+ },
26
+
27
+ test(data) {
28
+ return _ethereumjsUtil.default.bufferToHex(data.slice(0, 4)) === TRANSFER_METHOD_ID;
29
+ },
30
+
31
+ parse(data) {
32
+ if (!transfer.test(data)) throw new Error('It is not transfer data');
33
+ return {
34
+ to: _ethereumjsUtil.default.bufferToHex(data.slice(16, 36)),
35
+ amount: currency.baseUnit(_ethereumjsUtil.default.bufferToHex(data.slice(36, 68)))
36
+ };
37
+ }
38
+
39
+ }; // ethUtil.bufferToHex(ethUtil.sha3('approve(address,uint256)').slice(0, 4))
40
+
41
+ const APPROVE_METHOD_ID = '0x095ea7b3'; // TODO: not verified:
42
+ // ethUtil.bufferToHex(ethUtil.sha3('Approve(address,address,uint256)'))
43
+
44
+ const APPROVE_EVENT_ID = '0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925';
45
+ const approve = {
46
+ METHOD_ID: APPROVE_METHOD_ID,
47
+ EVENT_ID: APPROVE_EVENT_ID,
48
+
49
+ build(address, bufAmount) {
50
+ return Buffer.concat([_ethereumjsUtil.default.toBuffer(APPROVE_METHOD_ID), _ethereumjsUtil.default.zeros(12), _ethereumjsUtil.default.toBuffer(address), _ethereumjsUtil.default.zeros(32 - bufAmount.length), bufAmount]);
51
+ },
52
+
53
+ test(data) {
54
+ return _ethereumjsUtil.default.bufferToHex(data.slice(0, 4)) === APPROVE_METHOD_ID;
55
+ },
56
+
57
+ parse(data) {
58
+ if (!approve.test(data)) throw new Error('It is not approve data');
59
+ return {
60
+ address: _ethereumjsUtil.default.bufferToHex(data.slice(16, 36)),
61
+ amount: currency.baseUnit(_ethereumjsUtil.default.bufferToHex(data.slice(36, 68)))
62
+ };
63
+ }
64
+
65
+ };
66
+ return {
67
+ addresses,
68
+ transfer,
69
+ approve
70
+ };
71
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = createContract;
7
+
8
+ var _erc = _interopRequireDefault(require("./erc20"));
9
+
10
+ var _dai = _interopRequireDefault(require("./dai"));
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ function createContract(addresses, currency, assetName) {
15
+ switch (assetName) {
16
+ case 'dai':
17
+ return (0, _dai.default)(addresses, currency);
18
+
19
+ default:
20
+ return (0, _erc.default)(addresses, currency);
21
+ }
22
+ }
package/lib/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "createContract", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _createContract.default;
10
+ }
11
+ });
12
+
13
+ var _createContract = _interopRequireDefault(require("./create-contract"));
14
+
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "@exodus/ethereum-lib",
3
+ "version": "0.0.2",
4
+ "description": "Ethereum Library",
5
+ "main": "lib/index.js",
6
+ "files": [
7
+ "lib"
8
+ ],
9
+ "author": "Exodus Movement, Inc.",
10
+ "license": "UNLICENSED",
11
+ "homepage": "https://github.com/ExodusMovement/ethereum#readme",
12
+ "publishConfig": {
13
+ "access": "restricted"
14
+ },
15
+ "dependencies": {
16
+ "@exodus/assets": "~4.0.0",
17
+ "ethereumjs-util": "5.2.0"
18
+ },
19
+ "gitHead": "0a8635a17140ddf9dd9136d8646691d012e9701a"
20
+ }