@ensdomains/ensjs 3.0.0-alpha.23 → 3.0.0-alpha.25
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/dist/cjs/contracts/dnsRegistrar.js +25 -0
- package/dist/cjs/contracts/getContractAddress.js +27 -7
- package/dist/cjs/contracts/index.js +5 -0
- package/dist/cjs/functions/batchWrappers.js +2 -2
- package/dist/cjs/functions/importDNSSECName.js +65 -0
- package/dist/cjs/index.js +4 -0
- package/dist/cjs/utils/consts.js +24 -0
- package/dist/esm/contracts/dnsRegistrar.mjs +6 -0
- package/dist/esm/contracts/getContractAddress.mjs +27 -7
- package/dist/esm/contracts/index.mjs +5 -0
- package/dist/esm/functions/batchWrappers.mjs +2 -2
- package/dist/esm/functions/importDNSSECName.mjs +40 -0
- package/dist/esm/index.mjs +4 -0
- package/dist/esm/utils/consts.mjs +5 -0
- package/dist/types/contracts/dnsRegistrar.d.ts +3 -0
- package/dist/types/contracts/index.d.ts +1 -0
- package/dist/types/contracts/types.d.ts +1 -1
- package/dist/types/functions/importDNSSECName.d.ts +7 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/utils/consts.d.ts +1 -0
- package/package.json +5 -3
- package/src/contracts/dnsRegistrar.ts +5 -0
- package/src/contracts/getContractAddress.ts +24 -4
- package/src/contracts/index.ts +6 -0
- package/src/contracts/types.ts +1 -0
- package/src/functions/batchWrappers.ts +2 -2
- package/src/functions/importDNSSECName.ts +54 -0
- package/src/index.ts +6 -0
- package/src/utils/consts.ts +1 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var dnsRegistrar_exports = {};
|
|
20
|
+
__export(dnsRegistrar_exports, {
|
|
21
|
+
default: () => dnsRegistrar_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(dnsRegistrar_exports);
|
|
24
|
+
var import_DNSRegistrar_factory = require("../generated/factories/DNSRegistrar__factory");
|
|
25
|
+
var dnsRegistrar_default = (provider, address) => import_DNSRegistrar_factory.DNSRegistrar__factory.connect(address, provider);
|
|
@@ -28,16 +28,28 @@ const addresses = {
|
|
|
28
28
|
"4": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85",
|
|
29
29
|
"5": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85"
|
|
30
30
|
},
|
|
31
|
+
DNSRegistrar: {
|
|
32
|
+
"1": "0x58774Bb8acD458A640aF0B88238369A167546ef2",
|
|
33
|
+
"3": "0xdB328BA5FEcb432AF325Ca59E3778441eF5aa14F",
|
|
34
|
+
"5": "0x8edc487D26F6c8Fa76e032066A3D4F87E273515d"
|
|
35
|
+
},
|
|
31
36
|
ETHRegistrarController: {
|
|
32
37
|
"1": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
|
|
33
|
-
"3": "
|
|
38
|
+
"3": "0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8",
|
|
34
39
|
"4": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
|
|
35
|
-
"5": "
|
|
40
|
+
"5": "0x4a16c6Bbee697b66706E7dc0101BfCA1d60cdE76"
|
|
36
41
|
},
|
|
37
42
|
Multicall: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
38
|
-
NameWrapper:
|
|
43
|
+
NameWrapper: {
|
|
44
|
+
"1": "0x0000000000000000000000000000000000000000",
|
|
45
|
+
"3": "0xF82155e2a43Be0871821E9654Fc8Ae894FB8307C",
|
|
46
|
+
"4": "0x0000000000000000000000000000000000000000",
|
|
47
|
+
"5": "0x9c4C40960B53e9A01af429D3f90aEf02Bd0c4c72"
|
|
48
|
+
},
|
|
39
49
|
PublicResolver: {
|
|
40
|
-
"1": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41"
|
|
50
|
+
"1": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41",
|
|
51
|
+
"3": "0x13F0659Ee6bb7484C884FEeFb7F75C93951ef837",
|
|
52
|
+
"5": "0x58e4627848223BF59F8Ce34265c426E7B05E8625"
|
|
41
53
|
},
|
|
42
54
|
ENSRegistryWithFallback: {
|
|
43
55
|
"1": "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e",
|
|
@@ -46,13 +58,21 @@ const addresses = {
|
|
|
46
58
|
"5": "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e"
|
|
47
59
|
},
|
|
48
60
|
ReverseRegistrar: {
|
|
49
|
-
"1": "0x084b1c3C81545d370f3634392De611CaaBFf8148"
|
|
61
|
+
"1": "0x084b1c3C81545d370f3634392De611CaaBFf8148",
|
|
62
|
+
"3": "0x806246b52f8cB61655d3038c58D2f63Aa55d4edE",
|
|
63
|
+
"5": "0xD5610A08E370051a01fdfe4bB3ddf5270af1aA48"
|
|
50
64
|
},
|
|
51
65
|
UniversalResolver: {
|
|
52
66
|
"1": "0x580AF46E06DaaD47eb5940526FD64d95b815Cb70",
|
|
53
|
-
"
|
|
67
|
+
"3": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376",
|
|
68
|
+
"4": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376",
|
|
69
|
+
"5": "0x9380F1974D2B7064eA0c0EC251968D8c69f0Ae31"
|
|
54
70
|
},
|
|
55
|
-
BulkRenewal:
|
|
71
|
+
BulkRenewal: {
|
|
72
|
+
"1": "0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035",
|
|
73
|
+
"3": "0x051b02245D826757EfaF5C6209D4D79FB39FBC45",
|
|
74
|
+
"5": "0xa9e1df95a79C768aA435805b28E1B54Bb5ead063"
|
|
75
|
+
}
|
|
56
76
|
};
|
|
57
77
|
const getContractAddress = (networkId) => (contractName) => {
|
|
58
78
|
try {
|
|
@@ -31,6 +31,7 @@ var import_baseRegistrar = __toESM(require("./baseRegistrar"));
|
|
|
31
31
|
var import_ethRegistrarController = __toESM(require("./ethRegistrarController"));
|
|
32
32
|
var import_multicall = __toESM(require("./multicall"));
|
|
33
33
|
var import_nameWrapper = __toESM(require("./nameWrapper"));
|
|
34
|
+
var import_dnsRegistrar = __toESM(require("./dnsRegistrar"));
|
|
34
35
|
var import_publicResolver = __toESM(require("./publicResolver"));
|
|
35
36
|
var import_registry = __toESM(require("./registry"));
|
|
36
37
|
var import_reverseRegistrar = __toESM(require("./reverseRegistrar"));
|
|
@@ -70,6 +71,10 @@ class ContractManager {
|
|
|
70
71
|
"NameWrapper",
|
|
71
72
|
import_nameWrapper.default
|
|
72
73
|
);
|
|
74
|
+
getDNSRegistrar = this.generateContractGetter(
|
|
75
|
+
"DNSRegistrar",
|
|
76
|
+
import_dnsRegistrar.default
|
|
77
|
+
);
|
|
73
78
|
getBaseRegistrar = this.generateContractGetter(
|
|
74
79
|
"BaseRegistrarImplementation",
|
|
75
80
|
import_baseRegistrar.default
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
+
var importDNSSECName_exports = {};
|
|
26
|
+
__export(importDNSSECName_exports, {
|
|
27
|
+
DNS_OVER_HTTP_ENDPOINT: () => DNS_OVER_HTTP_ENDPOINT,
|
|
28
|
+
default: () => importDNSSECName_default
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(importDNSSECName_exports);
|
|
31
|
+
var import_dnssecoraclejs = require("@ensdomains/dnssecoraclejs");
|
|
32
|
+
var import_dns_packet = __toESM(require("dns-packet"));
|
|
33
|
+
var import_consts = require("../utils/consts");
|
|
34
|
+
const DNS_OVER_HTTP_ENDPOINT = "https://1.1.1.1/dns-query";
|
|
35
|
+
async function importDNSSECName_default({ contracts, provider }, name, { address, proverResult }) {
|
|
36
|
+
const dnsRegistrarContract = await contracts?.getDNSRegistrar();
|
|
37
|
+
const resolverContract = await contracts?.getPublicResolver();
|
|
38
|
+
const registrarOracle = await dnsRegistrarContract?.oracle();
|
|
39
|
+
if (!registrarOracle) {
|
|
40
|
+
throw new Error("No oracle found");
|
|
41
|
+
}
|
|
42
|
+
const oracle = new import_dnssecoraclejs.Oracle(registrarOracle, provider);
|
|
43
|
+
const proofData = await oracle.getProofData(proverResult);
|
|
44
|
+
const encodedName = `0x${import_dns_packet.default.name.encode(name).toString("hex")}`;
|
|
45
|
+
const data = proofData.rrsets.map(
|
|
46
|
+
(x) => Object.values(x)
|
|
47
|
+
);
|
|
48
|
+
const { proof } = proofData;
|
|
49
|
+
if (address === import_consts.EMPTY_ADDRESS) {
|
|
50
|
+
return dnsRegistrarContract?.populateTransaction.proveAndClaim(
|
|
51
|
+
encodedName,
|
|
52
|
+
data,
|
|
53
|
+
proof
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
if (address) {
|
|
57
|
+
return dnsRegistrarContract?.populateTransaction.proveAndClaimWithResolver(
|
|
58
|
+
encodedName,
|
|
59
|
+
data,
|
|
60
|
+
proof,
|
|
61
|
+
resolverContract.address,
|
|
62
|
+
address
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -304,6 +304,10 @@ class ENS {
|
|
|
304
304
|
burnFuses = this.generateWriteFunction("burnFuses", [
|
|
305
305
|
"contracts"
|
|
306
306
|
]);
|
|
307
|
+
importDNSSECName = this.generateWriteFunction(
|
|
308
|
+
"importDNSSECName",
|
|
309
|
+
["contracts", "provider", "signer"]
|
|
310
|
+
);
|
|
307
311
|
createSubname = this.generateWriteFunction(
|
|
308
312
|
"createSubname",
|
|
309
313
|
["contracts", "getExpiry"]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var consts_exports = {};
|
|
20
|
+
__export(consts_exports, {
|
|
21
|
+
EMPTY_ADDRESS: () => EMPTY_ADDRESS
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(consts_exports);
|
|
24
|
+
const EMPTY_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// src/contracts/dnsRegistrar.ts
|
|
2
|
+
import { DNSRegistrar__factory } from "../generated/factories/DNSRegistrar__factory.mjs";
|
|
3
|
+
var dnsRegistrar_default = (provider, address) => DNSRegistrar__factory.connect(address, provider);
|
|
4
|
+
export {
|
|
5
|
+
dnsRegistrar_default as default
|
|
6
|
+
};
|
|
@@ -6,16 +6,28 @@ var addresses = {
|
|
|
6
6
|
"4": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85",
|
|
7
7
|
"5": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85"
|
|
8
8
|
},
|
|
9
|
+
DNSRegistrar: {
|
|
10
|
+
"1": "0x58774Bb8acD458A640aF0B88238369A167546ef2",
|
|
11
|
+
"3": "0xdB328BA5FEcb432AF325Ca59E3778441eF5aa14F",
|
|
12
|
+
"5": "0x8edc487D26F6c8Fa76e032066A3D4F87E273515d"
|
|
13
|
+
},
|
|
9
14
|
ETHRegistrarController: {
|
|
10
15
|
"1": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
|
|
11
|
-
"3": "
|
|
16
|
+
"3": "0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8",
|
|
12
17
|
"4": "0x283af0b28c62c092c9727f1ee09c02ca627eb7f5",
|
|
13
|
-
"5": "
|
|
18
|
+
"5": "0x4a16c6Bbee697b66706E7dc0101BfCA1d60cdE76"
|
|
14
19
|
},
|
|
15
20
|
Multicall: "0xcA11bde05977b3631167028862bE2a173976CA11",
|
|
16
|
-
NameWrapper:
|
|
21
|
+
NameWrapper: {
|
|
22
|
+
"1": "0x0000000000000000000000000000000000000000",
|
|
23
|
+
"3": "0xF82155e2a43Be0871821E9654Fc8Ae894FB8307C",
|
|
24
|
+
"4": "0x0000000000000000000000000000000000000000",
|
|
25
|
+
"5": "0x9c4C40960B53e9A01af429D3f90aEf02Bd0c4c72"
|
|
26
|
+
},
|
|
17
27
|
PublicResolver: {
|
|
18
|
-
"1": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41"
|
|
28
|
+
"1": "0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41",
|
|
29
|
+
"3": "0x13F0659Ee6bb7484C884FEeFb7F75C93951ef837",
|
|
30
|
+
"5": "0x58e4627848223BF59F8Ce34265c426E7B05E8625"
|
|
19
31
|
},
|
|
20
32
|
ENSRegistryWithFallback: {
|
|
21
33
|
"1": "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e",
|
|
@@ -24,13 +36,21 @@ var addresses = {
|
|
|
24
36
|
"5": "0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e"
|
|
25
37
|
},
|
|
26
38
|
ReverseRegistrar: {
|
|
27
|
-
"1": "0x084b1c3C81545d370f3634392De611CaaBFf8148"
|
|
39
|
+
"1": "0x084b1c3C81545d370f3634392De611CaaBFf8148",
|
|
40
|
+
"3": "0x806246b52f8cB61655d3038c58D2f63Aa55d4edE",
|
|
41
|
+
"5": "0xD5610A08E370051a01fdfe4bB3ddf5270af1aA48"
|
|
28
42
|
},
|
|
29
43
|
UniversalResolver: {
|
|
30
44
|
"1": "0x580AF46E06DaaD47eb5940526FD64d95b815Cb70",
|
|
31
|
-
"
|
|
45
|
+
"3": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376",
|
|
46
|
+
"4": "0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376",
|
|
47
|
+
"5": "0x9380F1974D2B7064eA0c0EC251968D8c69f0Ae31"
|
|
32
48
|
},
|
|
33
|
-
BulkRenewal:
|
|
49
|
+
BulkRenewal: {
|
|
50
|
+
"1": "0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035",
|
|
51
|
+
"3": "0x051b02245D826757EfaF5C6209D4D79FB39FBC45",
|
|
52
|
+
"5": "0xa9e1df95a79C768aA435805b28E1B54Bb5ead063"
|
|
53
|
+
}
|
|
34
54
|
};
|
|
35
55
|
var getContractAddress = (networkId) => (contractName) => {
|
|
36
56
|
try {
|
|
@@ -3,6 +3,7 @@ import getBaseRegistrar from "./baseRegistrar.mjs";
|
|
|
3
3
|
import getEthRegistrarController from "./ethRegistrarController.mjs";
|
|
4
4
|
import getMulticall from "./multicall.mjs";
|
|
5
5
|
import getNameWrapper from "./nameWrapper.mjs";
|
|
6
|
+
import getDNSRegistrar from "./dnsRegistrar.mjs";
|
|
6
7
|
import getPublicResolver from "./publicResolver.mjs";
|
|
7
8
|
import getRegistry from "./registry.mjs";
|
|
8
9
|
import getReverseRegistrar from "./reverseRegistrar.mjs";
|
|
@@ -42,6 +43,10 @@ var ContractManager = class {
|
|
|
42
43
|
"NameWrapper",
|
|
43
44
|
getNameWrapper
|
|
44
45
|
);
|
|
46
|
+
getDNSRegistrar = this.generateContractGetter(
|
|
47
|
+
"DNSRegistrar",
|
|
48
|
+
getDNSRegistrar
|
|
49
|
+
);
|
|
45
50
|
getBaseRegistrar = this.generateContractGetter(
|
|
46
51
|
"BaseRegistrarImplementation",
|
|
47
52
|
getBaseRegistrar
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// src/functions/importDNSSECName.ts
|
|
2
|
+
import { Oracle as NewOracle } from "@ensdomains/dnssecoraclejs";
|
|
3
|
+
import packet from "dns-packet";
|
|
4
|
+
import { EMPTY_ADDRESS } from "../utils/consts.mjs";
|
|
5
|
+
var DNS_OVER_HTTP_ENDPOINT = "https://1.1.1.1/dns-query";
|
|
6
|
+
async function importDNSSECName_default({ contracts, provider }, name, { address, proverResult }) {
|
|
7
|
+
const dnsRegistrarContract = await contracts?.getDNSRegistrar();
|
|
8
|
+
const resolverContract = await contracts?.getPublicResolver();
|
|
9
|
+
const registrarOracle = await dnsRegistrarContract?.oracle();
|
|
10
|
+
if (!registrarOracle) {
|
|
11
|
+
throw new Error("No oracle found");
|
|
12
|
+
}
|
|
13
|
+
const oracle = new NewOracle(registrarOracle, provider);
|
|
14
|
+
const proofData = await oracle.getProofData(proverResult);
|
|
15
|
+
const encodedName = `0x${packet.name.encode(name).toString("hex")}`;
|
|
16
|
+
const data = proofData.rrsets.map(
|
|
17
|
+
(x) => Object.values(x)
|
|
18
|
+
);
|
|
19
|
+
const { proof } = proofData;
|
|
20
|
+
if (address === EMPTY_ADDRESS) {
|
|
21
|
+
return dnsRegistrarContract?.populateTransaction.proveAndClaim(
|
|
22
|
+
encodedName,
|
|
23
|
+
data,
|
|
24
|
+
proof
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
if (address) {
|
|
28
|
+
return dnsRegistrarContract?.populateTransaction.proveAndClaimWithResolver(
|
|
29
|
+
encodedName,
|
|
30
|
+
data,
|
|
31
|
+
proof,
|
|
32
|
+
resolverContract.address,
|
|
33
|
+
address
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export {
|
|
38
|
+
DNS_OVER_HTTP_ENDPOINT,
|
|
39
|
+
importDNSSECName_default as default
|
|
40
|
+
};
|
package/dist/esm/index.mjs
CHANGED
|
@@ -276,6 +276,10 @@ var ENS = class {
|
|
|
276
276
|
burnFuses = this.generateWriteFunction("burnFuses", [
|
|
277
277
|
"contracts"
|
|
278
278
|
]);
|
|
279
|
+
importDNSSECName = this.generateWriteFunction(
|
|
280
|
+
"importDNSSECName",
|
|
281
|
+
["contracts", "provider", "signer"]
|
|
282
|
+
);
|
|
279
283
|
createSubname = this.generateWriteFunction(
|
|
280
284
|
"createSubname",
|
|
281
285
|
["contracts", "getExpiry"]
|
|
@@ -10,6 +10,7 @@ export default class ContractManager {
|
|
|
10
10
|
getRegistry: (passedProvider?: any, address?: string) => Promise<import("../generated/ENSRegistry").ENSRegistry>;
|
|
11
11
|
getReverseRegistrar: (passedProvider?: any, address?: string) => Promise<import("../generated/ReverseRegistrar").ReverseRegistrar>;
|
|
12
12
|
getNameWrapper: (passedProvider?: any, address?: string) => Promise<import("../generated/NameWrapper").NameWrapper>;
|
|
13
|
+
getDNSRegistrar: (passedProvider?: any, address?: string) => Promise<import("../generated/DNSRegistrar").DNSRegistrar>;
|
|
13
14
|
getBaseRegistrar: (passedProvider?: any, address?: string) => Promise<import("../generated/BaseRegistrarImplementation").BaseRegistrarImplementation>;
|
|
14
15
|
getEthRegistrarController: (passedProvider?: any, address?: string) => Promise<import("../generated/ETHRegistrarController").ETHRegistrarController>;
|
|
15
16
|
getMulticall: (passedProvider?: any, address?: string) => Promise<import("../generated/Multicall").Multicall>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare type SupportedNetworkId = '1' | '3' | '4' | '5' | '1337';
|
|
2
|
-
export declare type ContractName = 'BaseRegistrarImplementation' | 'ETHRegistrarController' | 'Multicall' | 'NameWrapper' | 'PublicResolver' | 'ENSRegistryWithFallback' | 'ReverseRegistrar' | 'UniversalResolver' | 'BulkRenewal';
|
|
2
|
+
export declare type ContractName = 'BaseRegistrarImplementation' | 'ETHRegistrarController' | 'Multicall' | 'NameWrapper' | 'DNSRegistrar' | 'PublicResolver' | 'ENSRegistryWithFallback' | 'ReverseRegistrar' | 'UniversalResolver' | 'BulkRenewal';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ENSArgs } from '..';
|
|
2
|
+
export declare const DNS_OVER_HTTP_ENDPOINT = "https://1.1.1.1/dns-query";
|
|
3
|
+
export declare type ImportDNSSECNameProps = {
|
|
4
|
+
address: string;
|
|
5
|
+
proverResult: any;
|
|
6
|
+
};
|
|
7
|
+
export default function ({ contracts, provider }: ENSArgs<'contracts' | 'signer' | 'provider'>, name: string, { address, proverResult }: ImportDNSSECNameProps): Promise<import("ethers").PopulatedTransaction | undefined>;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ import type transferSubname from './functions/transferSubname';
|
|
|
19
19
|
import type unwrapName from './functions/unwrapName';
|
|
20
20
|
import type wrapName from './functions/wrapName';
|
|
21
21
|
import GqlManager from './GqlManager';
|
|
22
|
+
import importDNSSECName from './functions/importDNSSECName';
|
|
22
23
|
export type { Fuse, FuseArrayPossibilities, FuseObj, NamedFusesToBurn, UnnamedFuseType, UnnamedFuseValues, } from './utils/fuses';
|
|
23
24
|
declare type ENSOptions = {
|
|
24
25
|
graphURI?: string | null;
|
|
@@ -448,6 +449,7 @@ export declare class ENS {
|
|
|
448
449
|
wrapName: WriteFunction<typeof wrapName>;
|
|
449
450
|
unwrapName: WriteFunction<typeof unwrapName>;
|
|
450
451
|
burnFuses: WriteFunction<typeof burnFuses>;
|
|
452
|
+
importDNSSECName: WriteFunction<typeof importDNSSECName>;
|
|
451
453
|
createSubname: WriteFunction<typeof createSubname>;
|
|
452
454
|
deleteSubname: WriteFunction<typeof deleteSubname>;
|
|
453
455
|
transferSubname: WriteFunction<typeof transferSubname>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const EMPTY_ADDRESS = "0x0000000000000000000000000000000000000000";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ensdomains/ensjs",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.25",
|
|
4
4
|
"description": "ENS javascript library for contract interaction",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.mjs",
|
|
@@ -54,6 +54,8 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"@ensdomains/address-encoder": "0.2.16",
|
|
56
56
|
"@ensdomains/content-hash": "^2.5.7",
|
|
57
|
+
"@ensdomains/dnsprovejs": "^0.4.1",
|
|
58
|
+
"@ensdomains/dnssecoraclejs": "^0.2.7",
|
|
57
59
|
"dns-packet": "^5.3.1",
|
|
58
60
|
"ethers": "^5.6.1",
|
|
59
61
|
"graphql": "^16.3.0",
|
|
@@ -64,7 +66,7 @@
|
|
|
64
66
|
"devDependencies": {
|
|
65
67
|
"@ensdomains/buffer": "^0.0.13",
|
|
66
68
|
"@ensdomains/ens-contracts": "^0.0.14",
|
|
67
|
-
"@ensdomains/ens-test-env": "0.3.
|
|
69
|
+
"@ensdomains/ens-test-env": "0.3.2",
|
|
68
70
|
"@ethersproject/abi": "^5.6.0",
|
|
69
71
|
"@ethersproject/providers": "^5.6.2",
|
|
70
72
|
"@nomiclabs/hardhat-ethers": "npm:hardhat-deploy-ethers",
|
|
@@ -114,7 +116,7 @@
|
|
|
114
116
|
"build:types": "tsc --emitDeclarationOnly --project tsconfig.build.json",
|
|
115
117
|
"build": "pnpm clean && pnpm lint && pnpm build:types && pnpm node esbuild.js",
|
|
116
118
|
"prepublish": "pnpm build && cp ../../README.md ../../LICENSE ./",
|
|
117
|
-
"enode": "ganache --wallet.mnemonic=\"test test test test test test test test test test test junk\" --chain.chainId 1337 --chain.networkId 1337 --chain.time
|
|
119
|
+
"enode": "ganache --wallet.mnemonic=\"test test test test test test test test test test test junk\" --chain.chainId 1337 --chain.networkId 1337 --chain.time 1663311099000",
|
|
118
120
|
"ver": "pnpm version --no-workspaces-update"
|
|
119
121
|
}
|
|
120
122
|
}
|
|
@@ -11,16 +11,28 @@ const addresses: Record<
|
|
|
11
11
|
'4': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
|
|
12
12
|
'5': '0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85',
|
|
13
13
|
},
|
|
14
|
+
DNSRegistrar: {
|
|
15
|
+
'1': '0x58774Bb8acD458A640aF0B88238369A167546ef2',
|
|
16
|
+
'3': '0xdB328BA5FEcb432AF325Ca59E3778441eF5aa14F',
|
|
17
|
+
'5': '0x8edc487D26F6c8Fa76e032066A3D4F87E273515d',
|
|
18
|
+
},
|
|
14
19
|
ETHRegistrarController: {
|
|
15
20
|
'1': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
|
|
16
|
-
'3': '
|
|
21
|
+
'3': '0xa5627AB7Ae47063B533622C34FEBDb52d3281dF8',
|
|
17
22
|
'4': '0x283af0b28c62c092c9727f1ee09c02ca627eb7f5',
|
|
18
|
-
'5': '
|
|
23
|
+
'5': '0x4a16c6Bbee697b66706E7dc0101BfCA1d60cdE76',
|
|
19
24
|
},
|
|
20
25
|
Multicall: '0xcA11bde05977b3631167028862bE2a173976CA11',
|
|
21
|
-
NameWrapper:
|
|
26
|
+
NameWrapper: {
|
|
27
|
+
'1': '0x0000000000000000000000000000000000000000',
|
|
28
|
+
'3': '0xF82155e2a43Be0871821E9654Fc8Ae894FB8307C',
|
|
29
|
+
'4': '0x0000000000000000000000000000000000000000',
|
|
30
|
+
'5': '0x9c4C40960B53e9A01af429D3f90aEf02Bd0c4c72',
|
|
31
|
+
},
|
|
22
32
|
PublicResolver: {
|
|
23
33
|
'1': '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41',
|
|
34
|
+
'3': '0x13F0659Ee6bb7484C884FEeFb7F75C93951ef837',
|
|
35
|
+
'5': '0x58e4627848223BF59F8Ce34265c426E7B05E8625',
|
|
24
36
|
},
|
|
25
37
|
ENSRegistryWithFallback: {
|
|
26
38
|
'1': '0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e',
|
|
@@ -30,12 +42,20 @@ const addresses: Record<
|
|
|
30
42
|
},
|
|
31
43
|
ReverseRegistrar: {
|
|
32
44
|
'1': '0x084b1c3C81545d370f3634392De611CaaBFf8148',
|
|
45
|
+
'3': '0x806246b52f8cB61655d3038c58D2f63Aa55d4edE',
|
|
46
|
+
'5': '0xD5610A08E370051a01fdfe4bB3ddf5270af1aA48',
|
|
33
47
|
},
|
|
34
48
|
UniversalResolver: {
|
|
35
49
|
'1': '0x580AF46E06DaaD47eb5940526FD64d95b815Cb70',
|
|
50
|
+
'3': '0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376',
|
|
36
51
|
'4': '0x74e20bd2a1fe0cdbe45b9a1d89cb7e0a45b36376',
|
|
52
|
+
'5': '0x9380F1974D2B7064eA0c0EC251968D8c69f0Ae31',
|
|
53
|
+
},
|
|
54
|
+
BulkRenewal: {
|
|
55
|
+
'1': '0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035',
|
|
56
|
+
'3': '0x051b02245D826757EfaF5C6209D4D79FB39FBC45',
|
|
57
|
+
'5': '0xa9e1df95a79C768aA435805b28E1B54Bb5ead063',
|
|
37
58
|
},
|
|
38
|
-
BulkRenewal: '0xfF252725f6122A92551A5FA9a6b6bf10eb0Be035',
|
|
39
59
|
/* eslint-enable @typescript-eslint/naming-convention */
|
|
40
60
|
}
|
|
41
61
|
|
package/src/contracts/index.ts
CHANGED
|
@@ -4,6 +4,7 @@ import getEthRegistrarController from './ethRegistrarController'
|
|
|
4
4
|
import { ContractAddressFetch } from './getContractAddress'
|
|
5
5
|
import getMulticall from './multicall'
|
|
6
6
|
import getNameWrapper from './nameWrapper'
|
|
7
|
+
import getDNSRegistrar from './dnsRegistrar'
|
|
7
8
|
import getPublicResolver from './publicResolver'
|
|
8
9
|
import getRegistry from './registry'
|
|
9
10
|
import getReverseRegistrar from './reverseRegistrar'
|
|
@@ -63,6 +64,11 @@ export default class ContractManager {
|
|
|
63
64
|
getNameWrapper,
|
|
64
65
|
)
|
|
65
66
|
|
|
67
|
+
public getDNSRegistrar = this.generateContractGetter(
|
|
68
|
+
'DNSRegistrar',
|
|
69
|
+
getDNSRegistrar,
|
|
70
|
+
)
|
|
71
|
+
|
|
66
72
|
public getBaseRegistrar = this.generateContractGetter(
|
|
67
73
|
'BaseRegistrarImplementation',
|
|
68
74
|
getBaseRegistrar,
|
package/src/contracts/types.ts
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Oracle as NewOracle } from '@ensdomains/dnssecoraclejs'
|
|
2
|
+
import packet from 'dns-packet'
|
|
3
|
+
import type { ENSArgs } from '..'
|
|
4
|
+
import { EMPTY_ADDRESS } from '../utils/consts'
|
|
5
|
+
|
|
6
|
+
export const DNS_OVER_HTTP_ENDPOINT = 'https://1.1.1.1/dns-query'
|
|
7
|
+
|
|
8
|
+
export type ImportDNSSECNameProps = {
|
|
9
|
+
address: string
|
|
10
|
+
proverResult: any
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export default async function (
|
|
14
|
+
{ contracts, provider }: ENSArgs<'contracts' | 'signer' | 'provider'>,
|
|
15
|
+
name: string,
|
|
16
|
+
{ address, proverResult }: ImportDNSSECNameProps,
|
|
17
|
+
) {
|
|
18
|
+
const dnsRegistrarContract = await contracts?.getDNSRegistrar()
|
|
19
|
+
const resolverContract = await contracts?.getPublicResolver()
|
|
20
|
+
const registrarOracle = await dnsRegistrarContract?.oracle()
|
|
21
|
+
|
|
22
|
+
if (!registrarOracle) {
|
|
23
|
+
throw new Error('No oracle found')
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const oracle = new NewOracle(registrarOracle, provider!)
|
|
27
|
+
const proofData = await oracle.getProofData(proverResult)
|
|
28
|
+
const encodedName = `0x${packet.name.encode(name).toString('hex')}`
|
|
29
|
+
const data = proofData.rrsets.map((x) =>
|
|
30
|
+
Object.values(x),
|
|
31
|
+
) as unknown as Array<{
|
|
32
|
+
rrset: string
|
|
33
|
+
sig: string
|
|
34
|
+
}>
|
|
35
|
+
const { proof } = proofData
|
|
36
|
+
|
|
37
|
+
if (address === EMPTY_ADDRESS) {
|
|
38
|
+
return dnsRegistrarContract?.populateTransaction.proveAndClaim(
|
|
39
|
+
encodedName,
|
|
40
|
+
data,
|
|
41
|
+
proof,
|
|
42
|
+
)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (address) {
|
|
46
|
+
return dnsRegistrarContract?.populateTransaction.proveAndClaimWithResolver(
|
|
47
|
+
encodedName,
|
|
48
|
+
data,
|
|
49
|
+
proof,
|
|
50
|
+
resolverContract!.address,
|
|
51
|
+
address,
|
|
52
|
+
)
|
|
53
|
+
}
|
|
54
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -51,6 +51,7 @@ import type wrapName from './functions/wrapName'
|
|
|
51
51
|
import GqlManager from './GqlManager'
|
|
52
52
|
import singleCall from './utils/singleCall'
|
|
53
53
|
import writeTx from './utils/writeTx'
|
|
54
|
+
import importDNSSECName from './functions/importDNSSECName'
|
|
54
55
|
|
|
55
56
|
export type {
|
|
56
57
|
Fuse,
|
|
@@ -591,6 +592,11 @@ export class ENS {
|
|
|
591
592
|
'contracts',
|
|
592
593
|
])
|
|
593
594
|
|
|
595
|
+
public importDNSSECName = this.generateWriteFunction<typeof importDNSSECName>(
|
|
596
|
+
'importDNSSECName',
|
|
597
|
+
['contracts', 'provider', 'signer'],
|
|
598
|
+
)
|
|
599
|
+
|
|
594
600
|
public createSubname = this.generateWriteFunction<typeof createSubname>(
|
|
595
601
|
'createSubname',
|
|
596
602
|
['contracts', 'getExpiry'],
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const EMPTY_ADDRESS = '0x0000000000000000000000000000000000000000'
|