@alephium/web3 0.0.3 → 0.1.0-rc.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/.editorconfig +13 -0
- package/.eslintignore +2 -0
- package/.eslintrc.json +21 -0
- package/README.md +2 -2
- package/contracts/add.ral +7 -3
- package/contracts/greeter.ral +3 -1
- package/contracts/greeter_interface.ral +3 -0
- package/contracts/greeter_main.ral +9 -0
- package/contracts/main.ral +3 -5
- package/dev/user.conf +8 -4
- package/dist/alephium-web3.min.js +1 -1
- package/dist/alephium-web3.min.js.map +1 -1
- package/dist/scripts/check-versions.d.ts +1 -0
- package/dist/scripts/check-versions.js +39 -0
- package/dist/{cli → scripts}/create-project.d.ts +0 -0
- package/dist/scripts/create-project.js +124 -0
- package/dist/scripts/header.d.ts +0 -0
- package/dist/scripts/header.js +18 -0
- package/dist/scripts/rename-gitignore.d.ts +1 -0
- package/dist/scripts/rename-gitignore.js +24 -0
- package/dist/scripts/start-devnet.d.ts +1 -0
- package/dist/scripts/start-devnet.js +131 -0
- package/dist/scripts/stop-devnet.d.ts +1 -0
- package/dist/scripts/stop-devnet.js +32 -0
- package/dist/{api → src/api}/api-alephium.d.ts +287 -168
- package/dist/{api → src/api}/api-alephium.js +497 -115
- package/dist/{api → src/api}/api-explorer.d.ts +117 -19
- package/dist/{api → src/api}/api-explorer.js +206 -46
- package/dist/src/api/index.d.ts +10 -0
- package/dist/src/api/index.js +55 -0
- package/dist/{lib → src}/constants.d.ts +0 -0
- package/dist/{lib → src}/constants.js +0 -0
- package/dist/src/contract/contract.d.ts +182 -0
- package/dist/src/contract/contract.js +760 -0
- package/dist/src/contract/events.d.ts +29 -0
- package/dist/src/contract/events.js +77 -0
- package/dist/src/contract/index.d.ts +3 -0
- package/dist/src/contract/index.js +32 -0
- package/dist/src/contract/ralph.d.ts +12 -0
- package/dist/src/contract/ralph.js +362 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +34 -0
- package/dist/src/signer/index.d.ts +2 -0
- package/dist/src/signer/index.js +31 -0
- package/dist/src/signer/node-wallet.d.ts +13 -0
- package/dist/src/signer/node-wallet.js +60 -0
- package/dist/src/signer/signer.d.ts +143 -0
- package/dist/src/signer/signer.js +184 -0
- package/dist/src/test/index.d.ts +7 -0
- package/dist/src/test/index.js +41 -0
- package/dist/src/test/privatekey-wallet.d.ts +12 -0
- package/dist/src/test/privatekey-wallet.js +68 -0
- package/dist/{lib → src/utils}/address.d.ts +0 -0
- package/dist/{lib → src/utils}/address.js +1 -1
- package/dist/{lib → src/utils}/bs58.d.ts +2 -2
- package/dist/{lib → src/utils}/bs58.js +3 -1
- package/dist/{lib → src/utils}/djb2.d.ts +0 -0
- package/dist/{lib → src/utils}/djb2.js +1 -1
- package/dist/src/utils/index.d.ts +6 -0
- package/dist/src/utils/index.js +35 -0
- package/dist/{lib → src/utils}/password-crypto.d.ts +0 -0
- package/dist/{lib → src/utils}/password-crypto.js +8 -7
- package/dist/src/utils/transaction.d.ts +2 -0
- package/dist/src/utils/transaction.js +58 -0
- package/dist/src/utils/utils.d.ts +30 -0
- package/dist/{lib → src/utils}/utils.js +83 -19
- package/gitignore +5 -4
- package/package.json +55 -41
- package/scripts/create-project.ts +136 -0
- package/scripts/header.js +17 -0
- package/scripts/start-devnet.js +3 -3
- package/src/api/api-alephium.ts +2323 -0
- package/src/api/api-explorer.ts +808 -0
- package/src/api/index.ts +35 -0
- package/src/constants.ts +20 -0
- package/src/contract/contract.ts +1014 -0
- package/src/contract/events.ts +102 -0
- package/src/contract/index.ts +21 -0
- package/src/contract/ralph.test.ts +178 -0
- package/src/contract/ralph.ts +362 -0
- package/src/fixtures/address.json +36 -0
- package/src/fixtures/balance.json +9 -0
- package/src/fixtures/self-clique.json +19 -0
- package/src/fixtures/transaction.json +13 -0
- package/src/fixtures/transactions.json +179 -0
- package/src/index.ts +24 -0
- package/src/signer/fixtures/genesis.json +26 -0
- package/src/signer/fixtures/wallets.json +26 -0
- package/src/signer/index.ts +20 -0
- package/src/signer/node-wallet.ts +74 -0
- package/src/signer/signer.ts +313 -0
- package/src/test/index.ts +32 -0
- package/src/test/privatekey-wallet.ts +58 -0
- package/src/utils/address.test.ts +47 -0
- package/src/utils/address.ts +39 -0
- package/src/utils/bs58.ts +26 -0
- package/src/utils/djb2.test.ts +35 -0
- package/src/utils/djb2.ts +25 -0
- package/src/utils/index.ts +24 -0
- package/src/utils/password-crypto.test.ts +27 -0
- package/src/utils/password-crypto.ts +77 -0
- package/src/utils/transaction.test.ts +50 -0
- package/src/utils/transaction.ts +39 -0
- package/src/utils/utils.test.ts +160 -0
- package/src/utils/utils.ts +209 -0
- package/templates/{README.md → base/README.md} +4 -4
- package/templates/base/package.json +35 -0
- package/templates/base/src/greeter.ts +41 -0
- package/templates/base/tsconfig.json +19 -0
- package/templates/react/README.md +34 -0
- package/templates/react/config-overrides.js +18 -0
- package/templates/react/package.json +66 -0
- package/templates/react/src/App.tsx +42 -0
- package/templates/react/src/artifacts/greeter.ral.json +26 -0
- package/templates/react/src/artifacts/greeter_main.ral.json +22 -0
- package/templates/shared/.eslintrc.json +12 -0
- package/templates/shared/scripts/header.js +0 -0
- package/test/contract.test.ts +161 -0
- package/test/events.test.ts +139 -0
- package/webpack.config.js +1 -1
- package/contracts/greeter-main.ral +0 -8
- package/dist/cli/create-project.js +0 -87
- package/dist/lib/clique.d.ts +0 -23
- package/dist/lib/clique.js +0 -149
- package/dist/lib/contract.d.ts +0 -152
- package/dist/lib/contract.js +0 -711
- package/dist/lib/explorer.d.ts +0 -8
- package/dist/lib/explorer.js +0 -46
- package/dist/lib/index.d.ts +0 -12
- package/dist/lib/index.js +0 -60
- package/dist/lib/node.d.ts +0 -10
- package/dist/lib/node.js +0 -64
- package/dist/lib/numbers.d.ts +0 -7
- package/dist/lib/numbers.js +0 -128
- package/dist/lib/signer.d.ts +0 -17
- package/dist/lib/signer.js +0 -70
- package/dist/lib/storage-browser.d.ts +0 -9
- package/dist/lib/storage-browser.js +0 -52
- package/dist/lib/storage-node.d.ts +0 -9
- package/dist/lib/storage-node.js +0 -65
- package/dist/lib/utils.d.ts +0 -11
- package/dist/lib/wallet.d.ts +0 -30
- package/dist/lib/wallet.js +0 -142
- package/templates/package.json +0 -29
package/dist/lib/wallet.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
Copyright 2018 - 2022 The Alephium Authors
|
|
4
|
-
This file is part of the alephium project.
|
|
5
|
-
|
|
6
|
-
The library is free software: you can redistribute it and/or modify
|
|
7
|
-
it under the terms of the GNU Lesser General Public License as published by
|
|
8
|
-
the Free Software Foundation, either version 3 of the License, or
|
|
9
|
-
(at your option) any later version.
|
|
10
|
-
|
|
11
|
-
The library is distributed in the hope that it will be useful,
|
|
12
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
14
|
-
GNU Lesser General Public License for more details.
|
|
15
|
-
|
|
16
|
-
You should have received a copy of the GNU Lesser General Public License
|
|
17
|
-
along with the library. If not, see <http://www.gnu.org/licenses/>.
|
|
18
|
-
*/
|
|
19
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
22
|
-
}) : (function(o, m, k, k2) {
|
|
23
|
-
if (k2 === undefined) k2 = k;
|
|
24
|
-
o[k2] = m[k];
|
|
25
|
-
}));
|
|
26
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
-
}) : function(o, v) {
|
|
29
|
-
o["default"] = v;
|
|
30
|
-
});
|
|
31
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
32
|
-
if (mod && mod.__esModule) return mod;
|
|
33
|
-
var result = {};
|
|
34
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
35
|
-
__setModuleDefault(result, mod);
|
|
36
|
-
return result;
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.walletOpen = exports.walletImport = exports.walletGenerate = exports.deriveNewAddressData = exports.getWalletFromMnemonic = exports.getPath = exports.Wallet = void 0;
|
|
43
|
-
const bip32 = __importStar(require("bip32"));
|
|
44
|
-
const bip39 = __importStar(require("bip39"));
|
|
45
|
-
const blakejs_1 = __importDefault(require("blakejs"));
|
|
46
|
-
const bs58_1 = __importDefault(require("./bs58"));
|
|
47
|
-
const password_crypto_1 = require("./password-crypto");
|
|
48
|
-
const constants_1 = require("./constants");
|
|
49
|
-
const address_1 = require("./address");
|
|
50
|
-
class StoredState {
|
|
51
|
-
constructor({ mnemonic }) {
|
|
52
|
-
this.version = 1;
|
|
53
|
-
this.mnemonic = mnemonic;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
class Wallet {
|
|
57
|
-
constructor({ address, publicKey, privateKey, seed, mnemonic }) {
|
|
58
|
-
this.encrypt = (password) => {
|
|
59
|
-
const storedState = new StoredState({
|
|
60
|
-
mnemonic: this.mnemonic
|
|
61
|
-
});
|
|
62
|
-
return (0, password_crypto_1.encrypt)(password, JSON.stringify(storedState));
|
|
63
|
-
};
|
|
64
|
-
this.address = address;
|
|
65
|
-
this.publicKey = publicKey;
|
|
66
|
-
this.privateKey = privateKey;
|
|
67
|
-
this.seed = seed;
|
|
68
|
-
this.mnemonic = mnemonic;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.Wallet = Wallet;
|
|
72
|
-
const getPath = (addressIndex) => {
|
|
73
|
-
if (addressIndex !== undefined &&
|
|
74
|
-
(addressIndex < 0 || !Number.isInteger(addressIndex) || addressIndex.toString().includes('e'))) {
|
|
75
|
-
throw new Error('Invalid address index path level');
|
|
76
|
-
}
|
|
77
|
-
// Being explicit: we always use coinType 1234 no matter the network.
|
|
78
|
-
const coinType = "1234'";
|
|
79
|
-
return `m/44'/${coinType}/0'/0/${addressIndex || '0'}`;
|
|
80
|
-
};
|
|
81
|
-
exports.getPath = getPath;
|
|
82
|
-
const getWalletFromMnemonic = (mnemonic) => {
|
|
83
|
-
const seed = bip39.mnemonicToSeedSync(mnemonic);
|
|
84
|
-
const { address, publicKey, privateKey } = deriveAddressAndKeys(seed);
|
|
85
|
-
return new Wallet({ seed, address, publicKey, privateKey, mnemonic });
|
|
86
|
-
};
|
|
87
|
-
exports.getWalletFromMnemonic = getWalletFromMnemonic;
|
|
88
|
-
const deriveAddressAndKeys = (seed, addressIndex) => {
|
|
89
|
-
const masterKey = bip32.fromSeed(seed);
|
|
90
|
-
const keyPair = masterKey.derivePath((0, exports.getPath)(addressIndex));
|
|
91
|
-
if (!keyPair.privateKey)
|
|
92
|
-
throw new Error('Missing private key');
|
|
93
|
-
const publicKey = keyPair.publicKey.toString('hex');
|
|
94
|
-
const privateKey = keyPair.privateKey.toString('hex');
|
|
95
|
-
const hash = blakejs_1.default.blake2b(Buffer.from(publicKey, 'hex'), undefined, 32);
|
|
96
|
-
const pkhash = Buffer.from(hash);
|
|
97
|
-
const type = Buffer.from([0]);
|
|
98
|
-
const bytes = Buffer.concat([type, pkhash]);
|
|
99
|
-
const address = bs58_1.default.encode(bytes);
|
|
100
|
-
return { address, publicKey, privateKey, addressIndex: addressIndex || 0 };
|
|
101
|
-
};
|
|
102
|
-
const findNextAvailableAddressIndex = (startIndex, skipIndexes = []) => {
|
|
103
|
-
let nextAvailableAddressIndex = startIndex;
|
|
104
|
-
do {
|
|
105
|
-
nextAvailableAddressIndex++;
|
|
106
|
-
} while (skipIndexes.includes(nextAvailableAddressIndex));
|
|
107
|
-
return nextAvailableAddressIndex;
|
|
108
|
-
};
|
|
109
|
-
const deriveNewAddressData = (seed, forGroup, addressIndex, skipAddressIndexes = []) => {
|
|
110
|
-
if (forGroup !== undefined && (forGroup >= constants_1.TOTAL_NUMBER_OF_GROUPS || forGroup < 0 || !Number.isInteger(forGroup))) {
|
|
111
|
-
throw new Error('Invalid group number');
|
|
112
|
-
}
|
|
113
|
-
const initialAddressIndex = addressIndex || 0;
|
|
114
|
-
let nextAddressIndex = skipAddressIndexes.includes(initialAddressIndex)
|
|
115
|
-
? findNextAvailableAddressIndex(initialAddressIndex, skipAddressIndexes)
|
|
116
|
-
: initialAddressIndex;
|
|
117
|
-
let newAddressData = deriveAddressAndKeys(seed, nextAddressIndex);
|
|
118
|
-
while (forGroup !== undefined && (0, address_1.addressToGroup)(newAddressData.address, constants_1.TOTAL_NUMBER_OF_GROUPS) !== forGroup) {
|
|
119
|
-
nextAddressIndex = findNextAvailableAddressIndex(newAddressData.addressIndex, skipAddressIndexes);
|
|
120
|
-
newAddressData = deriveAddressAndKeys(seed, nextAddressIndex);
|
|
121
|
-
}
|
|
122
|
-
return newAddressData;
|
|
123
|
-
};
|
|
124
|
-
exports.deriveNewAddressData = deriveNewAddressData;
|
|
125
|
-
const walletGenerate = () => {
|
|
126
|
-
const mnemonic = bip39.generateMnemonic(256);
|
|
127
|
-
return (0, exports.getWalletFromMnemonic)(mnemonic);
|
|
128
|
-
};
|
|
129
|
-
exports.walletGenerate = walletGenerate;
|
|
130
|
-
const walletImport = (mnemonic) => {
|
|
131
|
-
if (!bip39.validateMnemonic(mnemonic)) {
|
|
132
|
-
throw new Error('Invalid seed phrase');
|
|
133
|
-
}
|
|
134
|
-
return (0, exports.getWalletFromMnemonic)(mnemonic);
|
|
135
|
-
};
|
|
136
|
-
exports.walletImport = walletImport;
|
|
137
|
-
const walletOpen = (password, encryptedWallet) => {
|
|
138
|
-
const dataDecrypted = (0, password_crypto_1.decrypt)(password, encryptedWallet);
|
|
139
|
-
const config = JSON.parse(dataDecrypted);
|
|
140
|
-
return (0, exports.getWalletFromMnemonic)(config.mnemonic);
|
|
141
|
-
};
|
|
142
|
-
exports.walletOpen = walletOpen;
|
package/templates/package.json
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "my-dapp-template",
|
|
3
|
-
"version": "0.0.0",
|
|
4
|
-
"license": "GPL",
|
|
5
|
-
"type": "commonjs",
|
|
6
|
-
"files": [
|
|
7
|
-
"dist/*"
|
|
8
|
-
],
|
|
9
|
-
"config": {
|
|
10
|
-
"alephium_version": "1.3.0"
|
|
11
|
-
},
|
|
12
|
-
"scripts": {
|
|
13
|
-
"compile": "rm -rf dist && npx tsc --build .",
|
|
14
|
-
"devnet:start": "node scripts/start-devnet.js ${npm_package_config_alephium_version}",
|
|
15
|
-
"devnet:stop": "node scripts/stop-devnet.js"
|
|
16
|
-
},
|
|
17
|
-
"dependencies": {
|
|
18
|
-
"@alephium/sdk": "~0.0.1"
|
|
19
|
-
},
|
|
20
|
-
"devDependencies": {
|
|
21
|
-
"@types/elliptic": "^6.4.13",
|
|
22
|
-
"@types/node": "^16.7.8",
|
|
23
|
-
"typescript": "^4.4.2"
|
|
24
|
-
},
|
|
25
|
-
"engines": {
|
|
26
|
-
"node": ">=14.0.0",
|
|
27
|
-
"npm": ">=7.0.0"
|
|
28
|
-
}
|
|
29
|
-
}
|