@cheqd/sdk 1.4.0 → 1.5.0-develop.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/.github/workflows/build.yml +3 -2
- package/.github/workflows/dispatch.yml +7 -1
- package/.github/workflows/test.yml +66 -0
- package/CHANGELOG.md +22 -0
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -3
- package/build/index.js.map +1 -1
- package/build/modules/did.d.ts +41 -28
- package/build/modules/did.d.ts.map +1 -1
- package/build/modules/did.js +78 -30
- package/build/modules/did.js.map +1 -1
- package/build/modules/resource.d.ts +4 -4
- package/build/modules/resource.d.ts.map +1 -1
- package/build/modules/resource.js +14 -33
- package/build/modules/resource.js.map +1 -1
- package/build/signer.d.ts +4 -4
- package/build/signer.d.ts.map +1 -1
- package/build/signer.js +27 -16
- package/build/signer.js.map +1 -1
- package/build/types.d.ts +239 -1
- package/build/types.d.ts.map +1 -1
- package/build/types.js +127 -2
- package/build/types.js.map +1 -1
- package/build/utils.d.ts +5 -17
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +52 -60
- package/build/utils.js.map +1 -1
- package/docker/Dockerfile +55 -0
- package/docker/entrypoint.sh +58 -0
- package/docker/localnet/build-latest.env +7 -0
- package/docker/localnet/container-env/observer-0.env +13 -0
- package/docker/localnet/container-env/seed-0.env +17 -0
- package/docker/localnet/container-env/validator-0.env +13 -0
- package/docker/localnet/container-env/validator-1.env +13 -0
- package/docker/localnet/container-env/validator-2.env +13 -0
- package/docker/localnet/container-env/validator-3.env +13 -0
- package/docker/localnet/docker-compose.yml +281 -0
- package/docker/localnet/gen-network-config.sh +259 -0
- package/docker/localnet/import-keys.sh +31 -0
- package/package.json +2 -2
- package/src/index.ts +1 -3
- package/src/modules/did.ts +118 -44
- package/src/modules/resource.ts +10 -33
- package/src/signer.ts +29 -16
- package/src/types.ts +160 -2
- package/src/utils.ts +67 -70
- package/tests/modules/did.test.ts +69 -9
- package/tests/modules/resource.test.ts +6 -4
- package/tests/signer.test.ts +25 -23
- package/tests/testutils.test.ts +43 -25
- package/tests/utils.test.ts +22 -2
package/build/utils.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IKeyPair, IKeyValuePair, ISignInputs, VerificationMethods, MethodSpecificIdAlgo, TVerificationKey, TVerificationKeyPrefix, CheqdNetwork, IVerificationKeys } from "./types";
|
|
1
|
+
import { IKeyPair, IKeyValuePair, ISignInputs, VerificationMethods, MethodSpecificIdAlgo, TVerificationKey, TVerificationKeyPrefix, CheqdNetwork, IVerificationKeys, MsgCreateDidPayload, VerificationMethodPayload, MsgUpdateDidPayload } from "./types";
|
|
3
2
|
import { KeyPair } from '@stablelib/ed25519';
|
|
4
|
-
import { MsgCreateDidPayload, MsgUpdateDidPayload } from "@cheqd/ts-proto/cheqd/v1/tx";
|
|
5
3
|
export type TImportableEd25519Key = {
|
|
6
4
|
publicKeyHex: string;
|
|
7
5
|
privateKeyHex: string;
|
|
@@ -9,22 +7,12 @@ export type TImportableEd25519Key = {
|
|
|
9
7
|
type: "Ed25519";
|
|
10
8
|
};
|
|
11
9
|
export type IdentifierPayload = Partial<MsgCreateDidPayload> | Partial<MsgUpdateDidPayload>;
|
|
12
|
-
export declare function parseToKeyValuePair(object: {
|
|
13
|
-
[key: string]: any;
|
|
14
|
-
}): IKeyValuePair[];
|
|
15
10
|
export declare function isEqualKeyValuePair(kv1: IKeyValuePair[], kv2: IKeyValuePair[]): boolean;
|
|
16
|
-
export declare function createSignInputsFromImportableEd25519Key(key: TImportableEd25519Key, verificationMethod:
|
|
11
|
+
export declare function createSignInputsFromImportableEd25519Key(key: TImportableEd25519Key, verificationMethod: VerificationMethodPayload[]): ISignInputs;
|
|
17
12
|
export declare function createKeyPairRaw(seed?: string): KeyPair;
|
|
18
13
|
export declare function createKeyPairBase64(seed?: string): IKeyPair;
|
|
19
14
|
export declare function createKeyPairHex(seed?: string): IKeyPair;
|
|
20
|
-
export declare function createVerificationKeys(
|
|
21
|
-
export declare function createDidVerificationMethod(verificationMethodTypes: VerificationMethods[], verificationKeys: IVerificationKeys[]):
|
|
22
|
-
export declare function createDidPayload(verificationMethods:
|
|
23
|
-
export declare function createDidPayloadWithSignInputs(seed?: string, keys?: IKeyPair[]): {
|
|
24
|
-
didPayload: MsgCreateDidPayload;
|
|
25
|
-
keys: IKeyPair[];
|
|
26
|
-
signInputs: ISignInputs[];
|
|
27
|
-
};
|
|
28
|
-
export declare function convertKeyPairtoTImportableEd25519Key(keyPair: IKeyPair): TImportableEd25519Key;
|
|
29
|
-
export declare function createSignInputsFromKeyPair(didDocument: IdentifierPayload, keys: IKeyPair[]): ISignInputs[];
|
|
15
|
+
export declare function createVerificationKeys(publicKey: string, algo: MethodSpecificIdAlgo, key: TVerificationKey<TVerificationKeyPrefix, number>, network?: CheqdNetwork): IVerificationKeys;
|
|
16
|
+
export declare function createDidVerificationMethod(verificationMethodTypes: VerificationMethods[], verificationKeys: IVerificationKeys[]): VerificationMethodPayload[];
|
|
17
|
+
export declare function createDidPayload(verificationMethods: VerificationMethodPayload[], verificationKeys: IVerificationKeys[]): MsgCreateDidPayload;
|
|
30
18
|
//# sourceMappingURL=utils.d.ts.map
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,aAAa,EACb,WAAW,EACX,mBAAmB,EAEnB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACtB,MAAM,SAAS,CAAA;AAIhB,OAAO,EAA4C,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAItF,MAAM,MAAM,qBAAqB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,SAAS,CAAA;CAClB,CAAA;AAKD,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;AAE3F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,OAAO,CAEvF;AAED,wBAAgB,wCAAwC,CAAC,GAAG,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,GAAG,WAAW,CA2CjJ;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAM3D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAMxD;AAED,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG,EAAE,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,CAAC,EAAE,OAAO,GAAE,YAAmC,GAAG,iBAAiB,CAyB5M;AAID,wBAAgB,2BAA2B,CAAC,uBAAuB,EAAE,mBAAmB,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,yBAAyB,EAAE,CAgC9J;AAED,wBAAgB,gBAAgB,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,GAAG,mBAAmB,CAgB7I"}
|
package/build/utils.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createDidPayload = exports.createDidVerificationMethod = exports.createVerificationKeys = exports.createKeyPairHex = exports.createKeyPairBase64 = exports.createKeyPairRaw = exports.createSignInputsFromImportableEd25519Key = exports.isEqualKeyValuePair = void 0;
|
|
4
4
|
const types_1 = require("./types");
|
|
5
5
|
const uint8arrays_1 = require("uint8arrays");
|
|
6
6
|
const basics_1 = require("multiformats/basics");
|
|
7
7
|
const did_jwt_1 = require("did-jwt");
|
|
8
8
|
const ed25519_1 = require("@stablelib/ed25519");
|
|
9
9
|
const uuid_1 = require("uuid");
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
exports.parseToKeyValuePair = parseToKeyValuePair;
|
|
10
|
+
const crypto_1 = require("crypto");
|
|
11
|
+
// multicodec ed25519-pub header as varint
|
|
12
|
+
const MULTICODEC_ED25519_PUB_HEADER = new Uint8Array([0xed, 0x01]);
|
|
15
13
|
function isEqualKeyValuePair(kv1, kv2) {
|
|
16
14
|
return kv1.every((item, index) => item.key === kv2[index].key && item.value === kv2[index].value);
|
|
17
15
|
}
|
|
@@ -22,26 +20,37 @@ function createSignInputsFromImportableEd25519Key(key, verificationMethod) {
|
|
|
22
20
|
const publicKey = (0, uint8arrays_1.fromString)(key.publicKeyHex, 'hex');
|
|
23
21
|
for (const method of verificationMethod) {
|
|
24
22
|
switch (method === null || method === void 0 ? void 0 : method.type) {
|
|
25
|
-
case types_1.VerificationMethods.
|
|
26
|
-
const publicKeyMultibase =
|
|
23
|
+
case types_1.VerificationMethods.Ed255192020:
|
|
24
|
+
const publicKeyMultibase = _encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, publicKey);
|
|
27
25
|
if (method.publicKeyMultibase === publicKeyMultibase) {
|
|
28
26
|
return {
|
|
29
27
|
verificationMethodId: method.id,
|
|
30
28
|
privateKeyHex: key.privateKeyHex
|
|
31
29
|
};
|
|
32
30
|
}
|
|
31
|
+
case types_1.VerificationMethods.Ed255192018:
|
|
32
|
+
const publicKeyBase58 = basics_1.bases['base58btc'].encode(publicKey).slice(1);
|
|
33
|
+
if (method.publicKeyBase58 === publicKeyBase58) {
|
|
34
|
+
return {
|
|
35
|
+
verificationMethodId: method.id,
|
|
36
|
+
privateKeyHex: key.privateKeyHex
|
|
37
|
+
};
|
|
38
|
+
}
|
|
33
39
|
case types_1.VerificationMethods.JWK:
|
|
34
|
-
const publicKeyJWK =
|
|
40
|
+
const publicKeyJWK = {
|
|
35
41
|
crv: 'Ed25519',
|
|
36
42
|
kty: 'OKP',
|
|
37
43
|
x: (0, uint8arrays_1.toString)(publicKey, 'base64url')
|
|
38
|
-
}
|
|
39
|
-
if (
|
|
44
|
+
};
|
|
45
|
+
if (JSON.stringify(method.publicKeyJWK) === JSON.stringify(publicKeyJWK)) {
|
|
40
46
|
return {
|
|
41
47
|
verificationMethodId: method.id,
|
|
42
48
|
privateKeyHex: key.privateKeyHex
|
|
43
49
|
};
|
|
44
50
|
}
|
|
51
|
+
else {
|
|
52
|
+
throw new Error(`JWK not matching ${method.publicKeyJWK}, ${publicKeyJWK}`);
|
|
53
|
+
}
|
|
45
54
|
}
|
|
46
55
|
}
|
|
47
56
|
throw new Error('No verification method type provided');
|
|
@@ -67,54 +76,61 @@ function createKeyPairHex(seed) {
|
|
|
67
76
|
};
|
|
68
77
|
}
|
|
69
78
|
exports.createKeyPairHex = createKeyPairHex;
|
|
70
|
-
function createVerificationKeys(
|
|
79
|
+
function createVerificationKeys(publicKey, algo, key, network = types_1.CheqdNetwork.Testnet) {
|
|
71
80
|
let methodSpecificId;
|
|
72
81
|
let didUrl;
|
|
82
|
+
publicKey = isBase64(publicKey) ? publicKey : (0, uint8arrays_1.toString)((0, uint8arrays_1.fromString)(publicKey, 'hex'), 'base64');
|
|
73
83
|
switch (algo) {
|
|
74
84
|
case types_1.MethodSpecificIdAlgo.Base58:
|
|
75
|
-
methodSpecificId = basics_1.bases['base58btc'].encode((0, did_jwt_1.base64ToBytes)(
|
|
76
|
-
didUrl = `did:cheqd:${network}:${
|
|
85
|
+
methodSpecificId = basics_1.bases['base58btc'].encode((0, did_jwt_1.base64ToBytes)(publicKey));
|
|
86
|
+
didUrl = `did:cheqd:${network}:${(basics_1.bases['base58btc'].encode(((0, uint8arrays_1.fromString)(sha256(publicKey))).slice(0, 16))).slice(1)}`;
|
|
77
87
|
return {
|
|
78
88
|
methodSpecificId,
|
|
79
89
|
didUrl,
|
|
80
90
|
keyId: `${didUrl}#${key}`,
|
|
81
|
-
publicKey
|
|
91
|
+
publicKey,
|
|
82
92
|
};
|
|
83
93
|
case types_1.MethodSpecificIdAlgo.Uuid:
|
|
84
|
-
methodSpecificId = basics_1.bases['base58btc'].encode((0, did_jwt_1.base64ToBytes)(
|
|
94
|
+
methodSpecificId = basics_1.bases['base58btc'].encode((0, did_jwt_1.base64ToBytes)(publicKey));
|
|
85
95
|
didUrl = `did:cheqd:${network}:${(0, uuid_1.v4)()}`;
|
|
86
96
|
return {
|
|
87
97
|
methodSpecificId,
|
|
88
98
|
didUrl,
|
|
89
99
|
keyId: `${didUrl}#${key}`,
|
|
90
|
-
publicKey
|
|
100
|
+
publicKey,
|
|
91
101
|
};
|
|
92
102
|
}
|
|
93
103
|
}
|
|
94
104
|
exports.createVerificationKeys = createVerificationKeys;
|
|
105
|
+
const isBase64 = (value) => /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{4})$/.test(value);
|
|
95
106
|
function createDidVerificationMethod(verificationMethodTypes, verificationKeys) {
|
|
96
107
|
var _a;
|
|
97
108
|
return (_a = verificationMethodTypes.map((type, _) => {
|
|
98
109
|
switch (type) {
|
|
99
|
-
case types_1.VerificationMethods.
|
|
110
|
+
case types_1.VerificationMethods.Ed255192020:
|
|
111
|
+
return {
|
|
112
|
+
id: verificationKeys[_].keyId,
|
|
113
|
+
type,
|
|
114
|
+
controller: verificationKeys[_].didUrl,
|
|
115
|
+
publicKeyMultibase: _encodeMbKey(MULTICODEC_ED25519_PUB_HEADER, (0, did_jwt_1.base64ToBytes)(verificationKeys[_].publicKey))
|
|
116
|
+
};
|
|
117
|
+
case types_1.VerificationMethods.Ed255192018:
|
|
100
118
|
return {
|
|
101
119
|
id: verificationKeys[_].keyId,
|
|
102
|
-
type
|
|
120
|
+
type,
|
|
103
121
|
controller: verificationKeys[_].didUrl,
|
|
104
|
-
|
|
105
|
-
publicKeyJwk: []
|
|
122
|
+
publicKeyBase58: verificationKeys[_].methodSpecificId.slice(1)
|
|
106
123
|
};
|
|
107
124
|
case types_1.VerificationMethods.JWK:
|
|
108
125
|
return {
|
|
109
126
|
id: verificationKeys[_].keyId,
|
|
110
|
-
type
|
|
127
|
+
type,
|
|
111
128
|
controller: verificationKeys[_].didUrl,
|
|
112
|
-
|
|
129
|
+
publicKeyJWK: {
|
|
113
130
|
crv: 'Ed25519',
|
|
114
131
|
kty: 'OKP',
|
|
115
132
|
x: (0, uint8arrays_1.toString)((0, uint8arrays_1.fromString)(verificationKeys[_].publicKey, 'base64pad'), 'base64url')
|
|
116
|
-
}
|
|
117
|
-
publicKeyMultibase: ''
|
|
133
|
+
}
|
|
118
134
|
};
|
|
119
135
|
}
|
|
120
136
|
})) !== null && _a !== void 0 ? _a : [];
|
|
@@ -126,47 +142,23 @@ function createDidPayload(verificationMethods, verificationKeys) {
|
|
|
126
142
|
if (!verificationKeys || verificationKeys.length === 0)
|
|
127
143
|
throw new Error('No verification keys provided');
|
|
128
144
|
const did = verificationKeys[0].didUrl;
|
|
129
|
-
return
|
|
145
|
+
return types_1.MsgCreateDidPayload.fromPartial({
|
|
130
146
|
id: did,
|
|
131
147
|
controller: verificationKeys.map(key => key.didUrl),
|
|
132
148
|
verificationMethod: verificationMethods,
|
|
133
|
-
authentication: verificationKeys.map(key => key.keyId)
|
|
149
|
+
authentication: verificationKeys.map(key => key.keyId),
|
|
150
|
+
versionId: (0, uuid_1.v4)()
|
|
134
151
|
});
|
|
135
152
|
}
|
|
136
153
|
exports.createDidPayload = createDidPayload;
|
|
137
|
-
function
|
|
138
|
-
|
|
139
|
-
throw new Error('Only one of seed or keys should be passed as an argument');
|
|
140
|
-
if (!keys) {
|
|
141
|
-
keys = [seed ? createKeyPairBase64(seed) : createKeyPairBase64()];
|
|
142
|
-
}
|
|
143
|
-
const verificationMethodTypes = keys.map((key) => !key.algo || key.algo == types_1.MethodSpecificIdAlgo.Base58 ? types_1.VerificationMethods.Base58 : types_1.VerificationMethods.JWK);
|
|
144
|
-
const verificationKeys = keys.map((key, i) => createVerificationKeys(key, key.algo || types_1.MethodSpecificIdAlgo.Base58, `key-${i}`));
|
|
145
|
-
const verificationMethod = createDidVerificationMethod(verificationMethodTypes, verificationKeys);
|
|
146
|
-
let payload = {
|
|
147
|
-
id: verificationKeys[0].didUrl,
|
|
148
|
-
controller: verificationKeys.map(key => key.didUrl),
|
|
149
|
-
verificationMethod: verificationMethod,
|
|
150
|
-
authentication: verificationKeys.map(key => key.keyId),
|
|
151
|
-
};
|
|
152
|
-
const keyHexs = keys.map((key) => convertKeyPairtoTImportableEd25519Key(key));
|
|
153
|
-
const signInputs = keyHexs.map((key) => createSignInputsFromImportableEd25519Key(key, verificationMethod));
|
|
154
|
-
return { didPayload: tx_1.MsgCreateDidPayload.fromPartial(payload), keys, signInputs };
|
|
155
|
-
}
|
|
156
|
-
exports.createDidPayloadWithSignInputs = createDidPayloadWithSignInputs;
|
|
157
|
-
function convertKeyPairtoTImportableEd25519Key(keyPair) {
|
|
158
|
-
return {
|
|
159
|
-
type: 'Ed25519',
|
|
160
|
-
privateKeyHex: (0, uint8arrays_1.toString)((0, uint8arrays_1.fromString)(keyPair.privateKey, 'base64'), 'hex'),
|
|
161
|
-
kid: 'kid',
|
|
162
|
-
publicKeyHex: (0, uint8arrays_1.toString)((0, uint8arrays_1.fromString)(keyPair.publicKey, 'base64'), 'hex')
|
|
163
|
-
};
|
|
154
|
+
function sha256(message) {
|
|
155
|
+
return (0, crypto_1.createHash)('sha256').update(message).digest('hex');
|
|
164
156
|
}
|
|
165
|
-
|
|
166
|
-
function
|
|
167
|
-
const
|
|
168
|
-
|
|
169
|
-
|
|
157
|
+
// encode a multibase base58-btc multicodec key
|
|
158
|
+
function _encodeMbKey(header, key) {
|
|
159
|
+
const mbKey = new Uint8Array(header.length + key.length);
|
|
160
|
+
mbKey.set(header);
|
|
161
|
+
mbKey.set(key, header.length);
|
|
162
|
+
return basics_1.bases['base58btc'].encode(mbKey);
|
|
170
163
|
}
|
|
171
|
-
exports.createSignInputsFromKeyPair = createSignInputsFromKeyPair;
|
|
172
164
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAAA,mCAcgB;AAChB,6CAAkD;AAClD,gDAA2C;AAC3C,qCAAuC;AACvC,gDAAsF;AACtF,+BAAyB;AACzB,mCAAmC;AASnC,0CAA0C;AAC1C,MAAM,6BAA6B,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAInE,SAAgB,mBAAmB,CAAC,GAAoB,EAAE,GAAoB;IAC1E,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;AACrG,CAAC;AAFD,kDAEC;AAED,SAAgB,wCAAwC,CAAC,GAA0B,EAAE,kBAA+C;IAChI,IAAI,CAAA,kBAAkB,aAAlB,kBAAkB,uBAAlB,kBAAkB,CAAE,MAAM,MAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IAEzF,MAAM,SAAS,GAAG,IAAA,wBAAU,EAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAErD,KAAI,MAAM,MAAM,IAAI,kBAAkB,EAAE;QACpC,QAAQ,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,EAAE;YAClB,KAAK,2BAAmB,CAAC,WAAW;gBAChC,MAAM,kBAAkB,GAAG,YAAY,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAA;gBACjF,IAAI,MAAM,CAAC,kBAAkB,KAAK,kBAAkB,EAAE;oBAClD,OAAO;wBACH,oBAAoB,EAAE,MAAM,CAAC,EAAE;wBAC/B,aAAa,EAAE,GAAG,CAAC,aAAa;qBACnC,CAAA;iBACJ;YAEL,KAAK,2BAAmB,CAAC,WAAW;gBAChC,MAAM,eAAe,GAAG,cAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBACrE,IAAI,MAAM,CAAC,eAAe,KAAK,eAAe,EAAE;oBAC5C,OAAO;wBACH,oBAAoB,EAAE,MAAM,CAAC,EAAE;wBAC/B,aAAa,EAAE,GAAG,CAAC,aAAa;qBACnC,CAAA;iBACJ;YAEL,KAAK,2BAAmB,CAAC,GAAG;gBACxB,MAAM,YAAY,GAAQ;oBACtB,GAAG,EAAE,SAAS;oBACd,GAAG,EAAE,KAAK;oBACV,CAAC,EAAE,IAAA,sBAAQ,EAAE,SAAS,EAAE,WAAW,CAAE;iBACxC,CAAA;gBACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;oBACtE,OAAO;wBACH,oBAAoB,EAAE,MAAM,CAAC,EAAE;wBAC/B,aAAa,EAAE,GAAG,CAAC,aAAa;qBACnC,CAAA;iBACJ;qBAAM;oBACH,MAAM,IAAI,KAAK,CAAC,oBAAoB,MAAM,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC,CAAA;iBAC9E;SACR;KACJ;IAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;AAC3D,CAAC;AA3CD,4FA2CC;AAED,SAAgB,gBAAgB,CAAC,IAAa;IAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAA,iCAAuB,EAAC,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,yBAAe,GAAE,CAAA;AAC/E,CAAC;AAFD,4CAEC;AAED,SAAgB,mBAAmB,CAAC,IAAa;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAA,iCAAuB,EAAC,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAA,yBAAe,GAAE,CAAA;IACpF,OAAO;QACH,SAAS,EAAE,IAAA,sBAAQ,EAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;QAChD,UAAU,EAAE,IAAA,sBAAQ,EAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;KACpD,CAAA;AACL,CAAC;AAND,kDAMC;AAED,SAAgB,gBAAgB,CAAC,IAAa;IAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACtC,OAAO;QACH,SAAS,EAAE,IAAA,sBAAQ,EAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;QAC7C,UAAU,EAAE,IAAA,sBAAQ,EAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;KACjD,CAAA;AACL,CAAC;AAND,4CAMC;AAED,SAAgB,sBAAsB,CAAC,SAAiB,EAAE,IAA0B,EAAE,GAAqD,EAAE,UAAwB,oBAAY,CAAC,OAAO;IACrL,IAAI,gBAAmC,CAAA;IACvC,IAAI,MAAmC,CAAA;IAEvC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAA,sBAAQ,EAAC,IAAA,wBAAU,EAAC,SAAS,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC9F,QAAQ,IAAI,EAAE;QACV,KAAK,4BAAoB,CAAC,MAAM;YAC5B,gBAAgB,GAAG,cAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAA,uBAAa,EAAC,SAAS,CAAC,CAAC,CAAA;YACtE,MAAM,GAAG,aAAa,OAAO,IAAI,CAAC,cAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,IAAA,wBAAU,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;YACpH,OAAO;gBACH,gBAAgB;gBAChB,MAAM;gBACN,KAAK,EAAE,GAAG,MAAM,IAAI,GAAG,EAAE;gBACzB,SAAS;aACZ,CAAA;QACL,KAAK,4BAAoB,CAAC,IAAI;YAC1B,gBAAgB,GAAG,cAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAA,uBAAa,EAAC,SAAS,CAAC,CAAC,CAAA;YACtE,MAAM,GAAG,aAAa,OAAO,IAAI,IAAA,SAAE,GAAE,EAAE,CAAA;YACvC,OAAO;gBACH,gBAAgB;gBAChB,MAAM;gBACN,KAAK,EAAE,GAAG,MAAM,IAAI,GAAG,EAAE;gBACzB,SAAS;aACZ,CAAA;KACR;AACL,CAAC;AAzBD,wDAyBC;AAED,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,kFAAkF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAEnI,SAAgB,2BAA2B,CAAC,uBAA8C,EAAE,gBAAqC;;IAC7H,OAAO,MAAA,uBAAuB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3C,QAAQ,IAAI,EAAE;YACV,KAAK,2BAAmB,CAAC,WAAW;gBAChC,OAAO;oBACH,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;oBAC7B,IAAI;oBACJ,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;oBACtC,kBAAkB,EAAE,YAAY,CAAC,6BAA6B,EAAE,IAAA,uBAAa,EAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;iBAChH,CAAA;YAEL,KAAK,2BAAmB,CAAC,WAAW;gBAChC,OAAO;oBACH,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;oBAC7B,IAAI;oBACJ,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;oBACtC,eAAe,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;iBACjE,CAAA;YAEL,KAAK,2BAAmB,CAAC,GAAG;gBACxB,OAAO;oBACH,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK;oBAC7B,IAAI;oBACJ,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM;oBACtC,YAAY,EAAE;wBACV,GAAG,EAAE,SAAS;wBACd,GAAG,EAAE,KAAK;wBACV,CAAC,EAAE,IAAA,sBAAQ,EAAE,IAAA,wBAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAE,EAAE,WAAW,CAAE;qBACvF;iBACJ,CAAA;SACR;IACL,CAAC,CAAC,mCAAI,EAAE,CAAA;AACZ,CAAC;AAhCD,kEAgCC;AAED,SAAgB,gBAAgB,CAAC,mBAAgD,EAAE,gBAAqC;IACpH,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;IACvD,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAEpD,MAAM,GAAG,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACtC,OAAO,2BAAmB,CAAC,WAAW,CAClC;QACI,EAAE,EAAE,GAAG;QACP,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;QACnD,kBAAkB,EAAE,mBAAmB;QACvC,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC;QACtD,SAAS,EAAE,IAAA,SAAE,GAAE;KAClB,CACJ,CAAA;AACL,CAAC;AAhBD,4CAgBC;AAED,SAAS,MAAM,CAAC,OAAe;IAC3B,OAAO,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7D,CAAC;AAED,+CAA+C;AAC/C,SAAS,YAAY,CAAC,MAAW,EAAE,GAAe;IAC9C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzD,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO,cAAK,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
###############################################################
|
|
2
|
+
### STAGE 1: Build node binary pre-requisites ###
|
|
3
|
+
###############################################################
|
|
4
|
+
|
|
5
|
+
FROM golang:1.18-alpine AS builder
|
|
6
|
+
|
|
7
|
+
# Install minimum necessary dependencies
|
|
8
|
+
ENV PACKAGES curl make git libc-dev bash gcc linux-headers
|
|
9
|
+
RUN apk update && apk add --no-cache $PACKAGES
|
|
10
|
+
|
|
11
|
+
# Set working directory for the build
|
|
12
|
+
WORKDIR /go/src/github.com/cheqd/cheqd-node
|
|
13
|
+
|
|
14
|
+
# Add source files
|
|
15
|
+
COPY . .
|
|
16
|
+
|
|
17
|
+
# Make node binary
|
|
18
|
+
RUN make build
|
|
19
|
+
|
|
20
|
+
###############################################################
|
|
21
|
+
### STAGE 2: Build cheqd-node image ###
|
|
22
|
+
###############################################################
|
|
23
|
+
|
|
24
|
+
FROM alpine:3.17 AS runner
|
|
25
|
+
|
|
26
|
+
# Install pre-requisites
|
|
27
|
+
RUN apk update && apk add --no-cache bash ca-certificates
|
|
28
|
+
|
|
29
|
+
# Copy over binaries from the build-env
|
|
30
|
+
COPY --from=builder /go/src/github.com/cheqd/cheqd-node/build/cheqd-noded /bin/cheqd-noded
|
|
31
|
+
|
|
32
|
+
# Set user directory and details
|
|
33
|
+
ARG HOME_DIR="/home/cheqd"
|
|
34
|
+
ARG USER="cheqd"
|
|
35
|
+
ARG GROUP=${USER}
|
|
36
|
+
ARG UID=1000
|
|
37
|
+
ARG GID=${UID}
|
|
38
|
+
|
|
39
|
+
# Add cheqd user to use in the container
|
|
40
|
+
RUN addgroup --system ${GROUP} --gid ${GID} \
|
|
41
|
+
&& adduser ${USER} --uid ${UID} -G ${GROUP} --system --home ${HOME_DIR} --shell /bin/bash
|
|
42
|
+
|
|
43
|
+
# Set entrypoint script
|
|
44
|
+
COPY --chown=${USER}:${GROUP} docker/entrypoint.sh /bin/node-start
|
|
45
|
+
RUN chmod +rx /bin/node-start
|
|
46
|
+
|
|
47
|
+
# Set working directory & bash defaults
|
|
48
|
+
WORKDIR ${HOME_DIR}
|
|
49
|
+
USER ${USER}
|
|
50
|
+
SHELL ["/bin/bash", "-euo", "pipefail", "-c"]
|
|
51
|
+
|
|
52
|
+
EXPOSE 26656 26657 26660 1317 9090 9091
|
|
53
|
+
|
|
54
|
+
# Set plain vanilla default entrypoint/command
|
|
55
|
+
CMD [ "cheqd-noded" ]
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Inits node configuration and runs the node.
|
|
4
|
+
# e -> exit immediately, u -> treat unset variables as errors and immediately, o -> sets the exit code to the rightmost command
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
|
|
7
|
+
# within the container, $HOME=/home/cheqd
|
|
8
|
+
CHEQD_ROOT_DIR="$HOME/.cheqdnode"
|
|
9
|
+
|
|
10
|
+
# Init node config directory
|
|
11
|
+
if [ ! -d "${CHEQD_ROOT_DIR}/config" ]
|
|
12
|
+
then
|
|
13
|
+
echo "Node config not found. Initializing."
|
|
14
|
+
cheqd-noded init "moniker-placeholder"
|
|
15
|
+
else
|
|
16
|
+
echo "Node config exists. Skipping initialization."
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
# Check if a genesis file has been passed in config
|
|
20
|
+
if [ -f "/genesis" ]
|
|
21
|
+
then
|
|
22
|
+
echo "Genesis file passed. Adding/replacing current genesis file."
|
|
23
|
+
cp /genesis "${CHEQD_ROOT_DIR}/config/genesis.json"
|
|
24
|
+
else
|
|
25
|
+
echo "No genesis file passed. Skipping and retaining existing genesis."
|
|
26
|
+
fi
|
|
27
|
+
|
|
28
|
+
# Check if a seeds file has been passed in config
|
|
29
|
+
if [ -f "/seeds" ]
|
|
30
|
+
then
|
|
31
|
+
echo "Seeds file passed. Overriding current seeds."
|
|
32
|
+
cp /seeds "${CHEQD_ROOT_DIR}/config/seeds.txt"
|
|
33
|
+
CHEQD_NODED_P2P_SEEDS="$(cat "${CHEQD_ROOT_DIR}/config/seeds.txt")"
|
|
34
|
+
export CHEQD_NODED_P2P_SEEDS
|
|
35
|
+
else
|
|
36
|
+
echo "No seeds file passed. Skipping and retaining existing seeds."
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# Check if a node_key file has been passed in config
|
|
40
|
+
if [ -f "/node_key" ]
|
|
41
|
+
then
|
|
42
|
+
echo "Node key file passed. Overriding current key."
|
|
43
|
+
cp /node_key "${CHEQD_ROOT_DIR}/config/node_key.json"
|
|
44
|
+
else
|
|
45
|
+
echo "No node key file passed. Skipping and retaining existing node key."
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Check if a priv_validator_key file has been passed in config
|
|
49
|
+
if [ -f "/priv_validator_key" ]
|
|
50
|
+
then
|
|
51
|
+
echo "Private validator key file passed. Replacing current key."
|
|
52
|
+
cp /priv_validator_key "${CHEQD_ROOT_DIR}/config/priv_validator_key.json"
|
|
53
|
+
else
|
|
54
|
+
echo "No private validator key file passed. Skipping and retaining existing key."
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# Run node
|
|
58
|
+
cheqd-noded start
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Environment variables used by Docker Compose
|
|
2
|
+
|
|
3
|
+
###############################################################
|
|
4
|
+
### REQUIRED: Node/network selection ###
|
|
5
|
+
###############################################################
|
|
6
|
+
# Define cheqd-noded image source. Change if using your own build.
|
|
7
|
+
BUILD_IMAGE="ghcr.io/cheqd/cheqd-node:1.0.4-develop.1"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Environment variables used by the container
|
|
2
|
+
|
|
3
|
+
# General
|
|
4
|
+
CHEQD_NODED_MONIKER="observer-0"
|
|
5
|
+
CHEQD_NODED_RPC_LADDR="tcp://0.0.0.0:26657"
|
|
6
|
+
CHEQD_NODED_API_ENABLE="true"
|
|
7
|
+
CHEQD_NODED_MINIMUM_GAS_PRICES="25ncheq"
|
|
8
|
+
# Consensus
|
|
9
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PROPOSE="500ms"
|
|
10
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PREVOTE="500ms"
|
|
11
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PRECOMMIT="500ms"
|
|
12
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_COMMIT="500ms"
|
|
13
|
+
CHEQD_NODED_CREATE_EMPTY_BLOCKS="false"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Environment variables used by the container
|
|
2
|
+
|
|
3
|
+
# General
|
|
4
|
+
CHEQD_NODED_MONIKER="seed-0"
|
|
5
|
+
CHEQD_NODED_RPC_LADDR="tcp://0.0.0.0:26657"
|
|
6
|
+
CHEQD_NODED_API_ENABLE="true"
|
|
7
|
+
CHEQD_NODED_MINIMUM_GAS_PRICES="25ncheq"
|
|
8
|
+
|
|
9
|
+
# Seed specific
|
|
10
|
+
CHEQD_NODED_P2P_SEED_MODE
|
|
11
|
+
|
|
12
|
+
# Consensus
|
|
13
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PROPOSE="500ms"
|
|
14
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PREVOTE="500ms"
|
|
15
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PRECOMMIT="500ms"
|
|
16
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_COMMIT="500ms"
|
|
17
|
+
CHEQD_NODED_CREATE_EMPTY_BLOCKS="false"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Environment variables used by the container
|
|
2
|
+
|
|
3
|
+
# General
|
|
4
|
+
CHEQD_NODED_MONIKER="validator-0"
|
|
5
|
+
CHEQD_NODED_RPC_LADDR="tcp://0.0.0.0:26657"
|
|
6
|
+
CHEQD_NODED_API_ENABLE="true"
|
|
7
|
+
CHEQD_NODED_MINIMUM_GAS_PRICES="25ncheq"
|
|
8
|
+
# Consensus
|
|
9
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PROPOSE="500ms"
|
|
10
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PREVOTE="500ms"
|
|
11
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PRECOMMIT="500ms"
|
|
12
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_COMMIT="500ms"
|
|
13
|
+
CHEQD_NODED_CREATE_EMPTY_BLOCKS="false"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Environment variables used by the container
|
|
2
|
+
|
|
3
|
+
# General
|
|
4
|
+
CHEQD_NODED_MONIKER="validator-1"
|
|
5
|
+
CHEQD_NODED_RPC_LADDR="tcp://0.0.0.0:26657"
|
|
6
|
+
CHEQD_NODED_API_ENABLE="true"
|
|
7
|
+
CHEQD_NODED_MINIMUM_GAS_PRICES="25ncheq"
|
|
8
|
+
# Consensus
|
|
9
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PROPOSE="500ms"
|
|
10
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PREVOTE="500ms"
|
|
11
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PRECOMMIT="500ms"
|
|
12
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_COMMIT="500ms"
|
|
13
|
+
CHEQD_NODED_CREATE_EMPTY_BLOCKS="false"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Environment variables used by the container
|
|
2
|
+
|
|
3
|
+
# General
|
|
4
|
+
CHEQD_NODED_MONIKER="validator-2"
|
|
5
|
+
CHEQD_NODED_RPC_LADDR="tcp://0.0.0.0:26657"
|
|
6
|
+
CHEQD_NODED_API_ENABLE="true"
|
|
7
|
+
CHEQD_NODED_MINIMUM_GAS_PRICES="25ncheq"
|
|
8
|
+
# Consensus
|
|
9
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PROPOSE="500ms"
|
|
10
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PREVOTE="500ms"
|
|
11
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PRECOMMIT="500ms"
|
|
12
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_COMMIT="500ms"
|
|
13
|
+
CHEQD_NODED_CREATE_EMPTY_BLOCKS="false"
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Environment variables used by the container
|
|
2
|
+
|
|
3
|
+
# General
|
|
4
|
+
CHEQD_NODED_MONIKER="validator-3"
|
|
5
|
+
CHEQD_NODED_RPC_LADDR="tcp://0.0.0.0:26657"
|
|
6
|
+
CHEQD_NODED_API_ENABLE="true"
|
|
7
|
+
CHEQD_NODED_MINIMUM_GAS_PRICES="25ncheq"
|
|
8
|
+
# Consensus
|
|
9
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PROPOSE="500ms"
|
|
10
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PREVOTE="500ms"
|
|
11
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_PRECOMMIT="500ms"
|
|
12
|
+
CHEQD_NODED_CONSENSUS_TIMEOUT_COMMIT="500ms"
|
|
13
|
+
CHEQD_NODED_CREATE_EMPTY_BLOCKS="false"
|