@com-chain/jsc3l 2.0.1-rc.2 → 2.0.1-rc.20

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.
Files changed (71) hide show
  1. package/README.md +12 -2
  2. package/build/bcRead.d.ts +8 -10
  3. package/build/bcRead.js +162 -49
  4. package/build/bcRead.js.map +1 -1
  5. package/build/bcTransaction.d.ts +8 -2
  6. package/build/bcTransaction.js +141 -108
  7. package/build/bcTransaction.js.map +1 -1
  8. package/build/blockies.js.map +1 -1
  9. package/build/config/transactions.d.ts +44 -0
  10. package/build/config/transactions.js +29 -0
  11. package/build/config/transactions.js.map +1 -0
  12. package/build/connection.d.ts +1 -1
  13. package/build/connection.js +44 -13
  14. package/build/connection.js.map +1 -1
  15. package/build/customization.js +13 -6
  16. package/build/customization.js.map +1 -1
  17. package/build/ethereum/cipher.js +3 -3
  18. package/build/ethereum/cipher.js.map +1 -1
  19. package/build/ethereum/ethFuncs.js +37 -1
  20. package/build/ethereum/ethFuncs.js.map +1 -1
  21. package/build/ethereum/etherUnits.js +5 -5
  22. package/build/ethereum/etherUnits.js.map +1 -1
  23. package/build/ethereum/myetherwallet.d.ts +1 -2
  24. package/build/ethereum/myetherwallet.js.map +1 -1
  25. package/build/ethereum/uiFuncs.d.ts +1 -3
  26. package/build/ethereum/uiFuncs.js +13 -23
  27. package/build/ethereum/uiFuncs.js.map +1 -1
  28. package/build/exception.d.ts +8 -0
  29. package/build/exception.js +14 -0
  30. package/build/exception.js.map +1 -0
  31. package/build/index.d.ts +8 -5
  32. package/build/index.js +38 -19
  33. package/build/index.js.map +1 -1
  34. package/build/memo.js +6 -3
  35. package/build/memo.js.map +1 -1
  36. package/build/qr.d.ts +31 -6
  37. package/build/qr.js +32 -12
  38. package/build/qr.js.map +1 -1
  39. package/build/rest/ajaxReq.d.ts +3 -10
  40. package/build/rest/ajaxReq.js +16 -33
  41. package/build/rest/ajaxReq.js.map +1 -1
  42. package/build/rest/http.js +6 -1
  43. package/build/rest/http.js.map +1 -1
  44. package/build/rest/serializer.js.map +1 -1
  45. package/build/type.d.ts +4 -4
  46. package/build/utils.d.ts +15 -0
  47. package/build/utils.js +270 -0
  48. package/build/utils.js.map +1 -0
  49. package/build/wallet.d.ts +6 -8
  50. package/build/wallet.js +35 -39
  51. package/build/wallet.js.map +1 -1
  52. package/package.json +10 -5
  53. package/skip-prod-transpilation.ts +48 -0
  54. package/src/bcRead.ts +184 -63
  55. package/src/bcTransaction.ts +143 -114
  56. package/src/config/transactions.ts +30 -0
  57. package/src/connection.ts +42 -9
  58. package/src/customization.ts +17 -2
  59. package/src/ethereum/ethFuncs.ts +42 -1
  60. package/src/ethereum/etherUnits.ts +5 -5
  61. package/src/ethereum/uiFuncs.ts +16 -25
  62. package/src/exception.ts +16 -0
  63. package/src/index.ts +53 -27
  64. package/src/qr.ts +86 -12
  65. package/src/rest/ajaxReq.ts +18 -40
  66. package/src/utils.ts +300 -0
  67. package/src/wallet.ts +37 -48
  68. package/tests/environment.ts +27 -0
  69. package/tests/setup.ts +12 -0
  70. package/tsconfig.json +8 -2
  71. package/vitest.config.ts +14 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/build/wallet.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import AjaxReq from './rest/ajaxReq';
2
+ import { SignedQR } from './qr';
2
3
  import Wallet from './ethereum/myetherwallet';
3
4
  export default abstract class MessagingWalletAbstract extends Wallet {
4
5
  abstract ajaxReq: AjaxReq;
@@ -21,15 +22,12 @@ export default abstract class MessagingWalletAbstract extends Wallet {
21
22
  encryptWallet(password: any): {
22
23
  [k: string]: any;
23
24
  };
24
- enrollAddress(codeId: any, token: any): any;
25
+ enrollAddress(id: any, token: any): any;
25
26
  requestUnlock(): any;
26
27
  static getWalletFromPrivKeyFile(jsonStr: any, password: any): Wallet;
27
- makeSignedQRWithPubKey(objContent: any, pubKey: any): {
28
- signature: any;
29
- qrContent: string;
30
- };
31
- makeSignedQR(obj: any): {
32
- signature: any;
33
- qrContent: string;
28
+ makeSignedQRContent(obj: any, pubKey: string | null): SignedQR;
29
+ makeSignedQRFragments(obj: any, fragmentCount: number, pubKey: string | null): {
30
+ full: string;
34
31
  };
32
+ checkSignedQRFromString(qrString: string): true | "InvalidFormat" | "InvalidSignature" | "NotForYou" | "Expired";
35
33
  }
package/build/wallet.js CHANGED
@@ -1,4 +1,4 @@
1
- import ethUtil from 'ethereumjs-util';
1
+ import { checkSignedQR, makeSignedQRContent, makeSignedQRFragments } from './qr';
2
2
  import { shortenAddress, cipherMsg, decipherMsg } from './ethereum/cipher';
3
3
  import Wallet from './ethereum/myetherwallet';
4
4
  export default class MessagingWalletAbstract extends Wallet {
@@ -34,18 +34,18 @@ export default class MessagingWalletAbstract extends Wallet {
34
34
  }
35
35
  async ensureWalletMessageKey() {
36
36
  const remoteKey = await this.ajaxReq.getMessageKey(this.getAddressString(), true);
37
- const walletMessageKey = this === null || this === void 0 ? void 0 : this.message_key;
37
+ const walletMessageKey = this?.message_key;
38
38
  if (typeof remoteKey.public_message_key !== 'undefined') {
39
39
  this.message_key = {
40
40
  pub: remoteKey.public_message_key,
41
41
  priv: remoteKey.private_message_key,
42
42
  };
43
- if ((walletMessageKey === null || walletMessageKey === void 0 ? void 0 : walletMessageKey.pub) !== remoteKey.public_message_key) {
43
+ if (walletMessageKey?.pub !== remoteKey.public_message_key) {
44
44
  return 'REPLACED_WITH_REMOTE';
45
45
  }
46
46
  return;
47
47
  }
48
- if (!(walletMessageKey === null || walletMessageKey === void 0 ? void 0 : walletMessageKey.pub) || !(walletMessageKey === null || walletMessageKey === void 0 ? void 0 : walletMessageKey.priv)) {
48
+ if (!walletMessageKey?.pub || !walletMessageKey?.priv) {
49
49
  this.message_key = this.newMessageKey();
50
50
  this.publishMessageKey();
51
51
  return 'CREATED_NEW';
@@ -79,7 +79,7 @@ export default class MessagingWalletAbstract extends Wallet {
79
79
  const newKey = Wallet.generate(false);
80
80
  const mPub = newKey.getPublicKeyString();
81
81
  const mPriv = newKey.getPrivateKeyString();
82
- return { pub: mPub, priv: cipherMsg(mPub, mPriv) };
82
+ return { pub: mPub, priv: cipherMsg(this.getPublicKeyString(), mPriv) };
83
83
  }
84
84
  messageKeysFromCrypted(cipheredKey) {
85
85
  // XXXvlab: here we are converting to hex and de-converting in decipherMsg...
@@ -99,8 +99,14 @@ export default class MessagingWalletAbstract extends Wallet {
99
99
  message_key: this.message_key
100
100
  });
101
101
  }
102
- enrollAddress(codeId, token) {
103
- return this.ajaxReq.enrollAddress(codeId, this.getAddressString(), this.currencyName, token);
102
+ enrollAddress(id, token) {
103
+ return this.ajaxReq.enrollPost({
104
+ id,
105
+ token,
106
+ currency: this.currencyName,
107
+ // XXXvlab: Yes, typo is intentional here (in PHP API):
108
+ adresse: this.getAddressString(),
109
+ });
104
110
  }
105
111
  requestUnlock() {
106
112
  return this.ajaxReq.requestUnlock(this.getAddressString(), this.unlockUrl);
@@ -124,40 +130,30 @@ export default class MessagingWalletAbstract extends Wallet {
124
130
  }
125
131
  }
126
132
  //
127
- // QR Codes requires EthUtils
133
+ // QR Code helpers
128
134
  //
129
- makeSignedQRWithPubKey(objContent, pubKey) {
130
- objContent.message_key = cipherMsg(pubKey, this.messageKeysFromWallet());
131
- objContent.address = this.getAddressString();
132
- return this.makeSignedQR(objContent);
133
- }
134
- makeSignedQR(obj) {
135
- // Values expected:
136
- const { server, destinary, begin, end, viewbalance, viewoldtran, pub_key } = obj;
137
- const formatDate = (date) => `${begin.getFullYear()}/${begin.getMonth()}/${begin.getDate()}`;
138
- const objContent = Object.assign(obj, {
135
+ makeSignedQRContent(obj, pubKey) {
136
+ return makeSignedQRContent({
137
+ server: this.currencyName,
139
138
  address: this.getAddressString(),
140
- begin: formatDate(begin),
141
- end: formatDate(end)
142
- });
143
- const hash = ethUtil.sha3(JSON.stringify(objContent));
144
- const signature = ethUtil.ecsign(hash, this.privKey);
145
- return {
146
- signature,
147
- qrContent: JSON.stringify({
148
- data: objContent,
149
- signature: {
150
- v: signature.v,
151
- r: '0x' + signature.r.toString('hex'),
152
- s: '0x' + signature.s.toString('hex')
153
- }
154
- })
155
- };
139
+ ...obj,
140
+ ...pubKey && {
141
+ message_key: cipherMsg(pubKey, this.messageKeysFromWallet())
142
+ },
143
+ }, this.privKey);
144
+ }
145
+ makeSignedQRFragments(obj, fragmentCount, pubKey) {
146
+ return makeSignedQRFragments(this.makeSignedQRContent(obj, pubKey), fragmentCount);
147
+ }
148
+ checkSignedQRFromString(qrString) {
149
+ let qrContent;
150
+ try {
151
+ qrContent = JSON.parse(qrString);
152
+ }
153
+ catch (e) {
154
+ return 'InvalidFormat';
155
+ }
156
+ return checkSignedQR(qrContent, this.getAddressString());
156
157
  }
157
158
  }
158
- // // TODO: What to do with this validateEnrollment
159
- // public static validateEnrollment (codeId, signature) {
160
- // return this.ajaxReq.validateEnrollmentLetter(
161
- // codeId, this.currencyName, signature)
162
- // }
163
159
  //# sourceMappingURL=wallet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@com-chain/jsc3l",
3
- "version": "2.0.1-rc.2",
3
+ "version": "2.0.1-rc.20",
4
4
  "description": "JavaScript Com-Chain Communication Library",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1",
7
+ "test": "vitest run",
8
8
  "build": "tsc",
9
9
  "watch": "tsc -w"
10
10
  },
@@ -25,15 +25,20 @@
25
25
  "homepage": "https://github.com/com-chain/JSC3L#readme",
26
26
  "devDependencies": {
27
27
  "@0k.io/prettier": "^0.0.1",
28
- "@types/node": "^16.10.3",
28
+ "@babel/runtime": "^7.15.4",
29
+ "@types/node": "^20.14.5",
29
30
  "@typescript-eslint/eslint-plugin": "^4.33.0",
30
31
  "@typescript-eslint/parser": "^4.33.0",
32
+ "buffer": "^5.7.1",
31
33
  "eslint": "^7.29.0",
32
34
  "eslint-config-standard": "^16.0.3",
33
- "typescript": "^4.4.3"
35
+ "jsdom": "^24.1.0",
36
+ "ts-node": "^10.9.2",
37
+ "ts-patch": "^3.2.1",
38
+ "typescript": "^5.5.3",
39
+ "vitest": "^1.6.0"
34
40
  },
35
41
  "dependencies": {
36
- "@babel/runtime": "^7.15.4",
37
42
  "bignumber.js": "^2.4.0",
38
43
  "ethereumjs-tx": "^1.3.7",
39
44
  "scryptsy": "^2.1.0",
@@ -0,0 +1,48 @@
1
+ import * as ts from 'typescript'
2
+ import * as path from 'path'
3
+
4
+ import type { TransformerExtras, PluginConfig } from 'ts-patch'
5
+
6
+ export default function (
7
+ program: ts.Program,
8
+ pluginConfig: PluginConfig,
9
+ { ts: tsInstance }: TransformerExtras
10
+ ) {
11
+ return (ctx: ts.TransformationContext) => {
12
+ const { factory } = ctx
13
+
14
+ // Find the project root based on the tsconfig.json location
15
+ const configFilePath = program.getCompilerOptions()
16
+ .configFilePath as string
17
+ const projectRoot = configFilePath
18
+ ? path.dirname(configFilePath)
19
+ : program.getCurrentDirectory()
20
+
21
+ function hasSkipComment(node: ts.Node): boolean {
22
+ const commentRanges =
23
+ tsInstance.getLeadingCommentRanges(node.getFullText(), 0) || []
24
+ return commentRanges.some((commentRange) => {
25
+ const comment = node
26
+ .getFullText()
27
+ .slice(commentRange.pos, commentRange.end)
28
+ return comment.includes('@skip-prod-transpilation')
29
+ })
30
+ }
31
+
32
+ return (sourceFile: ts.SourceFile) => {
33
+ function visit(node: ts.Node): ts.Node {
34
+ if (hasSkipComment(node)) {
35
+ console.log(
36
+ `\x1b[0;30m${path.relative(projectRoot, sourceFile.fileName)
37
+ }\x1b[0m: skipped \x1b[0;37m${
38
+ ts.SyntaxKind[node.kind]
39
+ }\x1b[0m due to \x1b[0;36m@skip-prod-transpilation\x1b[0m directive`
40
+ )
41
+ return factory.createEmptyStatement()
42
+ }
43
+ return tsInstance.visitEachChild(node, visit, ctx)
44
+ }
45
+ return tsInstance.visitNode(sourceFile, visit)
46
+ }
47
+ }
48
+ }
package/src/bcRead.ts CHANGED
@@ -4,17 +4,134 @@ import AjaxReq from './rest/ajaxReq'
4
4
  import { getNakedAddress, padLeft, getDataObj } from './ethereum/ethFuncs'
5
5
 
6
6
 
7
- function getNumber (data, ratio) {
8
- const shortData = '0x' + data.slice(-12)
9
- let a = parseInt(shortData, 16)
10
7
 
11
- if (a > (34359738368 * 4096)) {
12
- a -= 68719476736 * 4096
8
+ function decodeData (abiType: string, data: string): any {
9
+ if (data.startsWith('0x')) {
10
+ data = data.slice(2)
11
+ }
12
+ if (data.length === 0) {
13
+ return null
14
+ }
15
+ let dataBuffer: Buffer
16
+ try {
17
+ dataBuffer = Buffer.from(data, 'hex')
18
+ } catch (e) {
19
+ throw new Error(
20
+ 'Invalid data provided: not an hex string')
21
+ }
22
+ if (dataBuffer.length % 32 !== 0) {
23
+ throw new Error(
24
+ 'Invalid data provided: data length is not a multiple of 32')
25
+ }
26
+ const uintData = dataBuffer.readUIntBE(0, 32)
27
+ switch (abiType) {
28
+ case 'string':
29
+ const dataLocation = uintData
30
+ if (dataLocation % 32 !== 0) {
31
+ throw new Error(
32
+ 'Invalid data provided while decoding string: ' +
33
+ 'first 32byte word is not a valid address')
34
+ }
35
+ if (dataLocation + 64 > dataBuffer.length) {
36
+ throw new Error(
37
+ 'Invalid data provided while decoding string: ' +
38
+ 'not enough data to decode length and first word at given location')
39
+ }
40
+ const dataLength = dataBuffer.readUIntBE(dataLocation, 32)
41
+ const expectedLength = Math.ceil((dataLocation + 32 + dataLength) / 32) * 32
42
+ if (dataBuffer.length !== expectedLength) {
43
+ throw new Error(
44
+ 'Invalid data provided while decoding string: ' +
45
+ 'not enough data to decode advertised string')
46
+ }
47
+ const dataValue = dataBuffer.slice(dataLocation + 32, dataLocation + 32 + dataLength)
48
+ return dataValue.toString()
49
+ case 'uint':
50
+ case 'uint256':
51
+ return uintData
52
+ case 'number/100':
53
+ // Avoid passing through float and division by 100 to ensure format X...X.YY
54
+ let data_int = decodeData('number', data)
55
+ let sign = ""
56
+ if (data_int < 0) {
57
+ data_int = -data_int
58
+ sign = "-"
59
+ }
60
+ // garanteed >3 sized string representing uint
61
+ let data_str = data_int.toString().padStart(3, "0")
62
+ return `${sign}${data_str.slice(0,-2)}.${data_str.slice(-2)}`
63
+ case 'number':
64
+ // Using only 6 bytes, ignoring any upper bytes, this ensures
65
+ // javascript Number type is enough. What is decoded is signed
66
+ // int.
67
+
68
+ const shortData = '0x' + data.slice(-12)
69
+ let a = parseInt(shortData, 16)
70
+
71
+ if (a > 0x8000_0000_0000) {
72
+ a -= 0x1_0000_0000_0000
73
+ }
74
+
75
+ return a
76
+ case 'bool':
77
+ return uintData === 1
78
+ default:
79
+ throw new Error(`Unsupported ABI type: ${abiType}`)
13
80
  }
14
-
15
- return a / ratio
16
81
  }
17
82
 
83
+ /* @skip-prod-transpilation */
84
+ if (import.meta.vitest) {
85
+ const { it, expect, describe } = import.meta.vitest
86
+ describe('decode amounts', () => {
87
+ it('should decode "0x00...0000" to "0.00" (enforce full presence of digit and floating point)', () => {
88
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000000000'))
89
+ .toBe('0.00')
90
+ });
91
+ it('should decode "0x00...0001" to "0.01"', () => {
92
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000000001'))
93
+ .toBe('0.01')
94
+ });
95
+ it('should decode "0x00...0010" to "0.16"', () => {
96
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000000010'))
97
+ .toBe('0.16')
98
+ });
99
+ it('should decode "0x00...1000" to "40.96"', () => {
100
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000000000001000'))
101
+ .toBe('40.96')
102
+ });
103
+ it('should decode 0x00...01_0000_0000_0001 to "0.01" (ignore bytes > 6)', () => {
104
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000001000000000001'))
105
+ .toBe('0.01')
106
+ });
107
+ it('should decode 0x00...00_8000_0000_0000 to "1407374883553.28" (max positive number)', () => {
108
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000800000000000'))
109
+ .toBe('1407374883553.28')
110
+ });
111
+ it('should decode 0x00...00_8000_0000_0001 to "-1407374883553.27" (lowest negative number)', () => {
112
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000800000000001'))
113
+ .toBe('-1407374883553.27')
114
+ });
115
+ it('should decode 0x00...00_ffff_ffff_ffff to "-0.01" (max negative number)', () => {
116
+ expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000ffffffffffff'))
117
+ .toBe('-0.01')
118
+ });
119
+ it('should decode "0x00...019a" to "4.10" (enforce 2 digit after floating point)', () => {
120
+ expect(decodeData('number/100', '0x000000000000000000000000000000000000000000000000000000000000019a'))
121
+ .toBe('4.10')
122
+ });
123
+ });
124
+ describe('decode strings', () => {
125
+ it('should decode "0x00...020_0...0_" to "2.0"', () => {
126
+ expect(decodeData(
127
+ 'string', '0x' +
128
+ '0000000000000000000000000000000000000000000000000000000000000020' + // data location
129
+ '0000000000000000000000000000000000000000000000000000000000000003' + // data length
130
+ '322e300000000000000000000000000000000000000000000000000000000000' // actual string
131
+ )).toBe('2.0')
132
+ })
133
+ })
134
+ }
18
135
 
19
136
  export default abstract class BcReadAbstract {
20
137
 
@@ -22,86 +139,87 @@ export default abstract class BcReadAbstract {
22
139
  abstract contracts: string[]
23
140
 
24
141
  // Get Global status of the contract
25
- async getContractStatus () { return this.getGlobInfo('0x8b3c7c69') }
142
+ getContractStatus () { return this.read(this.contracts[0], '0x8b3c7c69') }
26
143
  // Get Global infos: Tax destinary Account
27
- async getTaxAccount () { return this.getGlobInfo('0x4f2eabe0') }
144
+ getTaxAccount () { return this.read(this.contracts[0], '0x4f2eabe0') }
28
145
 
29
- // Get Historical infos infos: Global balance
30
- async getHistoricalGlobalBalance (walletAddress, blockNb) {
31
- return this.getAmountAt('0x70a08231', walletAddress, blockNb)
146
+ async getVersion () {
147
+ const data = await this.read(this.contracts[0], '0x54fd4d50')
148
+ return decodeData('string', data as string)
32
149
  }
33
150
 
34
151
 
35
152
  // //////////////////////////////////////////////////////////////////////////
36
153
  // Generic read function
37
154
 
38
- async getAmount (address, walletAddress) {
39
- const userInfo = getDataObj(
40
- this.contracts[0], address, [getNakedAddress(walletAddress)])
41
- const data = await this.ajaxReq.getEthCall(userInfo)
42
- return getNumber(data, 100.0).toString()
43
- }
44
-
45
- async getAccInfo (address, walletAddress) {
46
- return this.getInfo(this.contracts[0], address, walletAddress)
155
+ async getAmount (address, walletAddress, blockNb) {
156
+ const data = await this.read(
157
+ this.contracts[0], address, [
158
+ getNakedAddress(walletAddress)
159
+ ], blockNb)
160
+ return decodeData('number/100', data)
47
161
  }
48
162
 
49
- getGlobInfo (address) {
50
- const userInfo = getDataObj(this.contracts[0], address, [])
51
- return this.ajaxReq.getEthCall(userInfo)
163
+ async getAccInfo (address, walletAddress, blockNb) {
164
+ const data = await this.read(
165
+ this.contracts[0], address, [
166
+ getNakedAddress(walletAddress)
167
+ ], blockNb)
168
+ return decodeData('number', data)
52
169
  }
53
170
 
54
- async getAmountAt (address, walletAddress, blockNb) {
55
- const userInfo = getDataObj(
56
- this.contracts[0], address, [getNakedAddress(walletAddress)])
57
- const blockHex = '0x' + new BigNumber(blockNb).toString(16)
58
- const data = await this.ajaxReq.getEthCallAt(userInfo, blockHex)
59
- return getNumber(data, 100.0).toString()
60
- }
61
-
62
- async getInfo (contract, address, walletAddress) {
63
- const userInfo = getDataObj(
64
- contract, address, [getNakedAddress(walletAddress)])
65
- const data = await this.ajaxReq.getEthCall(userInfo)
66
- return getNumber(data, 1.0)
171
+ async read (contract: string, address: string, args?: any[],
172
+ blockNb: string | number = 'pending'): Promise<string> {
173
+ args = args || []
174
+ const ethCall = getDataObj(contract, address, args)
175
+ if (typeof blockNb !== 'string') {
176
+ blockNb = '0x' + new BigNumber(blockNb).toString(16)
177
+ }
178
+ try {
179
+ return (await this.ajaxReq.getEthCallAt(ethCall, blockNb)) as string
180
+ } catch (e) {
181
+ throw new Error(
182
+ `Failed read contract: ${contract}, fn: ${address}`
183
+ )
184
+ }
67
185
  }
68
186
 
69
187
  async getAmountForElement (
70
- contract, functionAddress, callerAddress, elementAddress) {
71
- const userInfo = getDataObj(
72
- contract, functionAddress,
73
- [
188
+ contract, functionAddress, callerAddress, elementAddress,
189
+ blockNb: string | number = 'pending') {
190
+ const data = await this.read(
191
+ contract, functionAddress, [
74
192
  getNakedAddress(callerAddress),
75
193
  getNakedAddress(elementAddress)
76
- ])
77
- const data = await this.ajaxReq.getEthCall(userInfo)
78
- return getNumber(data, 100.0).toString()
194
+ ], blockNb)
195
+ return decodeData('number/100', data)
79
196
  }
80
197
 
81
198
  async getElementInList (
82
199
  contract, mapFunctionAddress, amountFunctionAddress,
83
- callerAddress, index, list, indMin) {
200
+ callerAddress, index, list, indMin,
201
+ blockNb: string | number = 'pending') {
84
202
 
85
203
  if (index < indMin) return list
86
204
 
87
- const userInfo = getDataObj(
88
- contract, mapFunctionAddress,
89
- [
205
+ const data = await this.read(
206
+ contract, mapFunctionAddress, [
90
207
  getNakedAddress(callerAddress),
91
208
  padLeft(new BigNumber(index).toString(16), 64)
92
- ])
93
- const data: {[k: string]: any} = await this.ajaxReq.getEthCall(userInfo)
94
-
209
+ ],
210
+ blockNb)
95
211
  const amount = await this.getAmountForElement(
96
- contract, amountFunctionAddress, callerAddress, data)
212
+ contract, amountFunctionAddress, callerAddress, data,
213
+ blockNb)
97
214
 
98
- const cleanedAdd = '0x' + data.substring(data.length - 40)
99
- const element = { address: cleanedAdd, amount: amount }
215
+ const address = '0x' + data.substring(data.length - 40)
216
+ const element = { address, amount }
100
217
  list.unshift(element)
101
218
  return this.getElementInList(
102
219
  contract, mapFunctionAddress,
103
220
  amountFunctionAddress, callerAddress, index - 1, list,
104
- indMin)
221
+ indMin,
222
+ blockNb)
105
223
  }
106
224
 
107
225
  }
@@ -135,8 +253,8 @@ const fnHashes = [
135
253
  fnHashes.forEach(({ fn, hashes }) => {
136
254
  for (const fnName in hashes) {
137
255
  const fnHash = hashes[fnName]
138
- BcReadAbstract.prototype[fnName] = function (walletAddress) {
139
- return this[fn](fnHash, walletAddress)
256
+ BcReadAbstract.prototype[fnName] = function (walletAddress, blockNb) {
257
+ return this[fn](fnHash, walletAddress, blockNb)
140
258
  }
141
259
  }
142
260
  })
@@ -160,15 +278,17 @@ const ListFunction = {
160
278
  for (const key in ListFunction) {
161
279
  const configList = ListFunction[key]
162
280
  BcReadAbstract.prototype[`get${key}List`] =
163
- async function (walletAddress, indMin, indMax) {
281
+ async function (walletAddress, indMin, indMax, blockNb: string | number = 'pending') {
164
282
  // Simple protection against ill inputs on indMin and indMax and to
165
283
  // avoid unwanted infinite loops
166
284
  indMax = indMax || 0
167
285
  indMin = indMin || 0
168
- const count = await this.getInfo(
169
- this.contracts[1],
170
- `0x${configList.count}`,
171
- walletAddress)
286
+ const data = await this.read(
287
+ this.contracts[1], `0x${configList.count}`, [
288
+ getNakedAddress(walletAddress)
289
+ ],
290
+ blockNb)
291
+ const count = decodeData('number', data)
172
292
  const list = []
173
293
  const index = Math.min(count - 1, indMax)
174
294
  return this.getElementInList(
@@ -178,7 +298,8 @@ for (const key in ListFunction) {
178
298
  walletAddress,
179
299
  index,
180
300
  list,
181
- indMin)
301
+ indMin,
302
+ blockNb)
182
303
  }
183
304
  }
184
305