Skip to content

Commit 763d8ed

Browse files
Merge pull request #104 from OffchainLabs/mock_external_signer_
[NIT-2799] Add mock external signer
2 parents 78bdbf7 + 3ce09fe commit 763d8ed

File tree

4 files changed

+103
-4
lines changed

4 files changed

+103
-4
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jobs:
2020
l3node: [l3node, l3node-token-6, no-l3node]
2121
tokenbridge: [tokenbridge, no-tokenbridge]
2222
simple: [simple, no-simple]
23+
externalsigner: [externalsigner, no-externalsigner]
2324

2425
steps:
2526
- name: Checkout
@@ -40,7 +41,7 @@ jobs:
4041
restore-keys: ${{ runner.os }}-buildx-
4142

4243
- name: Startup Nitro testnode
43-
run: ${{ github.workspace }}/.github/workflows/testnode.bash --init-force ${{ (matrix.l3node == 'l3node' && '--l3node') || (matrix.l3node == 'l3node-token-6' && '--l3node --l3-fee-token --l3-token-bridge --l3-fee-token-decimals 6') || '' }} ${{ matrix.tokenbridge == 'tokenbridge' && '--tokenbridge' || '--no-tokenbridge' }} --detach ${{ matrix.pos == 'pos' && '--pos' || '' }} --simple ${{ (matrix.simple == 'simple' && '--simple') || (matrix.simple == 'no-simple' && '--no-simple') || '' }}
44+
run: ${{ github.workspace }}/.github/workflows/testnode.bash --init-force ${{ (matrix.l3node == 'l3node' && '--l3node') || (matrix.l3node == 'l3node-token-6' && '--l3node --l3-fee-token --l3-token-bridge --l3-fee-token-decimals 6') || '' }} ${{ matrix.tokenbridge == 'tokenbridge' && '--tokenbridge' || '--no-tokenbridge' }} --detach ${{ matrix.pos == 'pos' && '--pos' || '' }} --simple ${{ (matrix.simple == 'simple' && '--simple') || (matrix.simple == 'no-simple' && '--no-simple') || '' }} ${{ matrix.externalsigner == 'externalsigner' && '--externalsigner' || '' }}
4445

4546
bold_upgrade:
4647
runs-on: ubuntu-8

docker-compose.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,11 @@ services:
397397
- "das-mirror-data:/das-mirror"
398398
command:
399399

400+
externalsigner:
401+
image: nitro-node-dev-testnode
402+
entrypoint: /usr/local/bin/mockexternalsigner
403+
command:
404+
400405
das-committee-a:
401406
pid: host # allow debugging
402407
image: nitro-node-dev-testnode

scripts/config.ts

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,21 @@ function writeConfigs(argv: any) {
204204
"staker-interval": "10s",
205205
"make-assertion-interval": "10s",
206206
"strategy": "MakeNodes",
207+
"data-poster": {
208+
"redis-signer": {
209+
"signing-key": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
210+
},
211+
"wait-for-l1-finality": false,
212+
"external-signer": {
213+
"url": "",
214+
"address": "",
215+
"method": "eth_signTransaction",
216+
"root-ca": "",
217+
"client-cert": "",
218+
"client-private-key": "",
219+
"insecure-skip-verify": false
220+
}
221+
}
207222
},
208223
"sequencer": false,
209224
"dangerous": {
@@ -237,7 +252,16 @@ function writeConfigs(argv: any) {
237252
"redis-signer": {
238253
"signing-key": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
239254
},
240-
"wait-for-l1-finality": false
255+
"wait-for-l1-finality": false,
256+
"external-signer": {
257+
"url": "",
258+
"address": "",
259+
"method": "eth_signTransaction",
260+
"root-ca": "",
261+
"client-cert": "",
262+
"client-private-key": "",
263+
"insecure-skip-verify": false
264+
}
241265
}
242266
},
243267
"block-validator": {
@@ -279,6 +303,27 @@ function writeConfigs(argv: any) {
279303

280304
baseConfig.node["data-availability"]["sequencer-inbox-address"] = ethers.utils.hexlify(getChainInfo()[0]["rollup"]["sequencer-inbox"]);
281305

306+
if (argv.externalSignerUrl != "") {
307+
baseConfig.node.staker["data-poster"]["external-signer"] = {
308+
"url": argv.externalSignerUrl,
309+
"address": argv.externalSignerAddress,
310+
"method": argv.externalSignerMethod,
311+
"root-ca": argv.externalSignerRootCA,
312+
"client-cert": argv.externalSignerClientCert,
313+
"client-private-key": argv.externalSignerClientPrivateKey,
314+
"insecure-skip-verify": argv.externalSignerInsecureSkipVerify
315+
}
316+
baseConfig.node["batch-poster"]["data-poster"]["external-signer"] = {
317+
"url": argv.externalSignerUrl,
318+
"address": argv.externalSignerAddress,
319+
"method": argv.externalSignerMethod,
320+
"root-ca": argv.externalSignerRootCA,
321+
"client-cert": argv.externalSignerClientCert,
322+
"client-private-key": argv.externalSignerClientPrivateKey,
323+
"insecure-skip-verify": argv.externalSignerInsecureSkipVerify
324+
}
325+
}
326+
282327
const baseConfJSON = JSON.stringify(baseConfig)
283328

284329
if (argv.simple) {
@@ -541,6 +586,41 @@ export const writeConfigCommand = {
541586
describe: "DAS committee member B BLS pub key",
542587
default: ""
543588
},
589+
externalSignerUrl: {
590+
string: true,
591+
describe: "external signer URL",
592+
default: ""
593+
},
594+
externalSignerAddress: {
595+
string: true,
596+
describe: "external signer address",
597+
default: ""
598+
},
599+
externalSignerMethod: {
600+
string: true,
601+
describe: "external signer method",
602+
default: ""
603+
},
604+
externalSignerRootCA: {
605+
string: true,
606+
describe: "external signer root CA",
607+
default: ""
608+
},
609+
externalSignerClientCert: {
610+
string: true,
611+
describe: "external signer client cert",
612+
default: ""
613+
},
614+
externalSignerClientPrivateKey: {
615+
string: true,
616+
describe: "external signer client private key",
617+
default: ""
618+
},
619+
externalSignerInsecureSkipVerify: {
620+
boolean: true,
621+
describe: "external signer insecure skip verify",
622+
default: false
623+
}
544624

545625
},
546626
handler: (argv: any) => {

test-node.bash

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ devprivkey=b6b15c8cb491557369f3c7d2c287b053eb229daa9c22138887752191c9520659
5959
l1chainid=1337
6060
simple=true
6161
l2anytrust=false
62+
externalsigner=false
6263

6364
# Use the dev versions of nitro/blockscout
6465
dev_nitro=false
@@ -251,6 +252,10 @@ while [[ $# -gt 0 ]]; do
251252
l2anytrust=true
252253
shift
253254
;;
255+
--externalsigner)
256+
externalsigner=true
257+
shift
258+
;;
254259
--redundantsequencers)
255260
simple=false
256261
redundantsequencers=$2
@@ -508,13 +513,21 @@ if $l2anytrust; then
508513
fi
509514
fi
510515

516+
externalsignerConfigLine=""
517+
518+
if $externalsigner; then
519+
echo == Generating External Signer Config
520+
sequencerPrivateKey=$(docker compose run scripts print-private-key --account sequencer | tail -n 1 | tr -d '\r\n')
521+
externalsignerConfigLine=$(docker compose run --entrypoint sh externalsigner "$sequencerPrivateKey")
522+
fi
523+
511524
if $force_init; then
512525
if $simple; then
513526
echo == Writing configs
514-
docker compose run scripts write-config --simple $anytrustNodeConfigLine
527+
docker compose run scripts write-config --simple $anytrustNodeConfigLine $externalsignerConfigLine
515528
else
516529
echo == Writing configs
517-
docker compose run scripts write-config $anytrustNodeConfigLine
530+
docker compose run scripts write-config $anytrustNodeConfigLine $externalsignerConfigLine
518531

519532
echo == Initializing redis
520533
docker compose up --wait redis

0 commit comments

Comments
 (0)