Skip to content

Commit a1640a0

Browse files
authored
fix: cannot join delegated multisig inception event (#1027)
* add script for multisig delegate join * add script to test scripts * fix spelling error * restore print statement, accidentally removed * remove misleading comment
1 parent 2b19d0c commit a1640a0

File tree

4 files changed

+92
-3
lines changed

4 files changed

+92
-3
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/bin/bash
2+
set -e
3+
4+
source "$(dirname "$0")/script-utils.sh"
5+
6+
delegator=$(random_name delegator)
7+
delegate_1=$(random_name delegate_1)
8+
delegate_2=$(random_name delegate_2)
9+
10+
kli init --name "$delegator" --nopasscode
11+
kli init --name "$delegate_1" --nopasscode
12+
kli init --name "$delegate_2" --nopasscode
13+
14+
delegator_witness_aid="BLskRTInXnMxWaGqcpSyMgo0nYbalW99cGZESrz3zapM"
15+
delegator_witness_url="http://127.0.0.1:5643/oobi/$delegator_witness_aid/controller"
16+
delegate_witness_aid="BBilc4-L3tFUnfM_wJr4S4OJanAv_VmF_dJNN6vkf2Ha"
17+
delegate_witness_url="http://127.0.0.1:5642/oobi/$delegate_witness_aid/controller"
18+
19+
kli oobi resolve --name "$delegator" --oobi "$delegator_witness_url"
20+
kli oobi resolve --name "$delegate_1" --oobi "$delegate_witness_url"
21+
kli oobi resolve --name "$delegate_2" --oobi "$delegate_witness_url"
22+
23+
kli incept --name "$delegator" --alias delegator --icount 1 --ncount 1 --isith 1 --nsith 1 --transferable --toad 1 --wit "$delegator_witness_aid"
24+
kli ends add --name "$delegator" --alias delegator --eid "$delegator_witness_aid" --role mailbox
25+
26+
delegator_aid=$(kli aid --name "$delegator" --alias delegator)
27+
delegator_oobi=$(kli oobi generate --name "$delegator" --alias delegator --role witness | tail -n 1)
28+
29+
kli incept --name "$delegate_1" --alias member --icount 1 --ncount 1 --isith 1 --nsith 1 --transferable --toad 1 --wit "$delegate_witness_aid"
30+
kli incept --name "$delegate_2" --alias member --icount 1 --ncount 1 --isith 1 --nsith 1 --transferable --toad 1 --wit "$delegate_witness_aid"
31+
kli ends add --name "$delegate_1" --alias member --eid "$delegate_witness_aid" --role mailbox
32+
kli ends add --name "$delegate_2" --alias member --eid "$delegate_witness_aid" --role mailbox
33+
34+
delegate_1_oobi=$(kli oobi generate --name "$delegate_1" --alias member --role witness | tail -n 1)
35+
delegate_2_oobi=$(kli oobi generate --name "$delegate_2" --alias member --role witness | tail -n 1)
36+
delegate_1_aid=$(kli aid --name "$delegate_1" --alias member)
37+
delegate_2_aid=$(kli aid --name "$delegate_2" --alias member)
38+
delegator_oobi=$(kli oobi generate --name "$delegator" --alias delegator --role witness | tail -n 1)
39+
delegator_aid=$(kli aid --name "$delegator" --alias delegator)
40+
41+
kli oobi resolve --name "$delegate_1" --oobi-alias delegator --oobi "${delegator_oobi}"
42+
kli oobi resolve --name "$delegate_1" --oobi-alias delegate_2 --oobi "${delegate_2_oobi}"
43+
kli oobi resolve --name "$delegate_2" --oobi-alias delegate_1 --oobi "${delegate_1_oobi}"
44+
kli oobi resolve --name "$delegator" --oobi-alias delegate_1 --oobi "${delegate_1_oobi}"
45+
46+
delegate_json=$(mktemp)
47+
cat << EOF > "$delegate_json"
48+
{
49+
"transferable": true,
50+
"toad": 1,
51+
"wits": ["$delegate_witness_aid"],
52+
"aids": ["$delegate_1_aid", "$delegate_2_aid"],
53+
"isith": "1",
54+
"nsith": "1",
55+
"delpre": "$delegator_aid"
56+
}
57+
EOF
58+
59+
# Delegate 1 initiates the delegated identifier
60+
kli multisig incept --name "$delegate_1" --alias member --group delegate --file "$delegate_json" &
61+
PID_LIST="$!"
62+
kli delegate confirm --name "$delegator" --alias delegator --interact -Y &
63+
PID_LIST+=" $!"
64+
wait $PID_LIST
65+
66+
kli status --name "$delegate_1" --alias delegate
67+
delegate_aid_from_1=$(kli aid --name "$delegate_1" --alias delegate)
68+
69+
# Delegate 2 now catches up by joining the inception event
70+
kli oobi resolve --name "$delegate_2" --oobi-alias delegator --oobi "${delegator_oobi}"
71+
kli multisig join --name "$delegate_2" --auto --group delegate
72+
kli status --name "$delegate_2" --alias delegate
73+
delegate_aid_from_2=$(kli aid --name "$delegate_2" --alias delegate)
74+
75+
if [[ "$delegate_aid_from_1" != "$delegate_aid_from_2" ]]; then
76+
echo "Delegate AIDs do not match"
77+
exit 1
78+
fi

scripts/demo/basic/script-utils.sh

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,10 @@ print_red() {
1919
print_lcyan() {
2020
text=$1
2121
printf "\e[96m${text}\e[0m\n"
22-
}
22+
}
23+
24+
random_name () {
25+
suffix=$(head /dev/urandom | tr -dc a-z0-9 | head -c4)
26+
prefix="${1:-test}"
27+
echo "${prefix}_${suffix}"
28+
}

scripts/demo/test_scripts.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ printf "\n************************************\n"
4747
"${script_dir}/basic/delegate.sh"
4848
isSuccess
4949

50+
printf "\n************************************\n"
51+
printf "Running multisig-delegate-join.sh"
52+
printf "\n************************************\n"
53+
"${script_dir}/basic/multisig-delegate-join.sh"
54+
isSuccess
55+
5056
printf "\n************************************\n"
5157
printf "Running multisig.sh"
5258
printf "\n************************************\n"

src/keri/app/cli/commands/multisig/join.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ def incept(self, attrs):
163163

164164
smids = payload["smids"]
165165
rmids = payload["rmids"] if "rmids" in payload else None
166-
ked = exn.ked
167166
both = list(set(smids + (rmids or [])))
168167

169168
mhab = None
@@ -190,7 +189,7 @@ def incept(self, attrs):
190189

191190
inits["toad"] = oicp.ked["bt"]
192191
inits["wits"] = oicp.ked["b"]
193-
inits["delpre"] = oicp.ked["di"] if "di" in ked else None
192+
inits["delpre"] = oicp.ked["di"] if "di" in oicp.ked else None
194193

195194
print()
196195
print("Group Multisig Inception proposed:")

0 commit comments

Comments
 (0)