55> _ "Setting up MPC wallets has always been painful, complex, and confusing. With MPCIUM, you can launch a secure MPC node cluster and generate wallets in minutes."_
66
77<p ><img title =" fystack logo " src =" https://avatars.githubusercontent.com/u/149689344?s=400&u=13bed818667eefccd78ca4b4207d088eeb4f6110&v=4 " width =" 320 " height =" 320 " ></p >
8- <p ><a href =" https://t.me/+IsRhPyWuOFxmNmM9 " >Join our Telegram community to discuss MPCIUM and Web3 cyber security!</a ></p >
8+ <p ><a href =" https://t.me/+9AtC0z8sS79iZjFl " >Join our Telegram community to discuss MPCIUM and Web3 cyber security!</a ></p >
99
1010[ ![ Go Version] ( https://img.shields.io/badge/Go-v1.23+-00ADD8?logo=go&style=for-the-badge )] ( https://go.dev/ )
1111[ ![ License] ( https://img.shields.io/github/license/fystack/mpcium?style=for-the-badge )] ( ./LICENSE )
1212[ ![ Go Report Card] ( https://goreportcard.com/badge/github.com/fystack/mpcium?style=for-the-badge )] ( https://goreportcard.com/report/github.com/fystack/mpcium )
1313[ ![ Version] ( https://img.shields.io/github/v/release/fystack/mpcium?label=version&logo=semantic-release&style=for-the-badge )] ( https://github.com/fystack/mpcium/releases )
14- [ ![ Telegram] ( https://img.shields.io/badge/Telegram-Community%20-26A5E4?logo=telegram&style=for-the-badge )] ( https://t.me/+IsRhPyWuOFxmNmM9 )
14+ [ ![ Telegram] ( https://img.shields.io/badge/Telegram-Community%20-26A5E4?logo=telegram&style=for-the-badge )] ( https://t.me/+9AtC0z8sS79iZjFl )
1515[ ![ Made by Fystack] ( https://img.shields.io/badge/Made%20by-Fystack-7D3DF4?style=for-the-badge )] ( https://fystack.io )
1616
1717</div >
@@ -287,7 +287,7 @@ configs := []client.KMSSignerOptions{
287287 },
288288 // Full ARN
289289 {
290- Region: " ap-southeast-1" ,
290+ Region: " ap-southeast-1" ,
291291 KeyID: " arn:aws:kms:ap-southeast-1:123456789012:key/12345678-1234-1234-1234-123456789012" ,
292292 },
293293 // Key alias
@@ -307,13 +307,14 @@ For local development and testing with AWS KMS functionality, you can use LocalS
307307### Setup LocalStack
308308
3093091 . ** Install and start LocalStack:**
310+
310311 ``` bash
311312 # Using Docker
312313 docker run -d \
313314 -p 4566:4566 \
314315 -p 4510-4559:4510-4559 \
315316 localstack/localstack
316-
317+
317318 # Or using LocalStack CLI
318319 pip install localstack
319320 localstack start
@@ -329,6 +330,7 @@ For local development and testing with AWS KMS functionality, you can use LocalS
329330### Create P256 Key in LocalStack
330331
3313321 . ** Create a P256 keypair in AWS KMS:**
333+
332334 ``` bash
333335 aws kms create-key \
334336 --endpoint-url=http://localhost:4566 \
@@ -338,33 +340,33 @@ For local development and testing with AWS KMS functionality, you can use LocalS
338340 ```
339341
340342 Expected response:
343+
341344 ``` json
342345 {
343- "KeyMetadata" : {
344- "AWSAccountId" : " 000000000000" ,
345- "KeyId" : " 330a9df7-4fd9-4e86-bfc5-f360b4c4be39" ,
346- "Arn" : " arn:aws:kms:us-east-1:000000000000:key/330a9df7-4fd9-4e86-bfc5-f360b4c4be39" ,
347- "CreationDate" : " 2025-08-28T16:42:18.487655+07:00" ,
348- "Enabled" : true ,
349- "Description" : " Test P-256 keypair for Mpcium" ,
350- "KeyUsage" : " SIGN_VERIFY" ,
351- "KeyState" : " Enabled" ,
352- "Origin" : " AWS_KMS" ,
353- "KeyManager" : " CUSTOMER" ,
354- "CustomerMasterKeySpec" : " ECC_NIST_P256" ,
355- "KeySpec" : " ECC_NIST_P256" ,
356- "SigningAlgorithms" : [
357- " ECDSA_SHA_256"
358- ],
359- "MultiRegion" : false
360- }
346+ "KeyMetadata" : {
347+ "AWSAccountId" : " 000000000000" ,
348+ "KeyId" : " 330a9df7-4fd9-4e86-bfc5-f360b4c4be39" ,
349+ "Arn" : " arn:aws:kms:us-east-1:000000000000:key/330a9df7-4fd9-4e86-bfc5-f360b4c4be39" ,
350+ "CreationDate" : " 2025-08-28T16:42:18.487655+07:00" ,
351+ "Enabled" : true ,
352+ "Description" : " Test P-256 keypair for Mpcium" ,
353+ "KeyUsage" : " SIGN_VERIFY" ,
354+ "KeyState" : " Enabled" ,
355+ "Origin" : " AWS_KMS" ,
356+ "KeyManager" : " CUSTOMER" ,
357+ "CustomerMasterKeySpec" : " ECC_NIST_P256" ,
358+ "KeySpec" : " ECC_NIST_P256" ,
359+ "SigningAlgorithms" : [" ECDSA_SHA_256" ],
360+ "MultiRegion" : false
361+ }
361362 }
362363 ```
363364
3643652 . ** Get the public key (save the KeyId from step 1):**
366+
365367 ``` bash
366368 export KMS_KEY_ID=" 330a9df7-4fd9-4e86-bfc5-f360b4c4be39" # Replace with your KeyId
367-
369+
368370 aws kms get-public-key \
369371 --endpoint-url=http://localhost:4566 \
370372 --key-id $KMS_KEY_ID \
@@ -373,6 +375,7 @@ For local development and testing with AWS KMS functionality, you can use LocalS
373375 ```
374376
375377 Expected response (hex-encoded public key):
378+
376379 ```
377380 3059301306072a8648ce3d020106082a8648ce3d030107034200042b7539fc51123c3ba53c71e244be71d2d3138cbed4909fa259b924b56c92148cadd410cf98b789269d7f672c3ba978e99fc1f01c87daee97292d3666357738fd
378381 ```
@@ -382,7 +385,7 @@ For local development and testing with AWS KMS functionality, you can use LocalS
382385Update your ` config.yaml ` file with the KMS public key and algorithm:
383386
384387``` yaml
385- # MPC Configuration
388+ # MPC Configuration
386389mpc_threshold : 2
387390event_initiator_pubkey : " 3059301306072a8648ce3d020106082a8648ce3d030107034200042b7539fc51123c3ba53c71e244be71d2d3138cbed4909fa259b924b56c92148cadd410cf98b789269d7f672c3ba978e99fc1f01c87daee97292d3666357738fd"
388391event_initiator_algorithm : " p256"
@@ -404,6 +407,7 @@ go run examples/generate/kms/main.go -n 1
404407```
405408
406409The example will:
410+
4074111 . Connect to LocalStack KMS endpoint
4084122 . Load the P256 public key from KMS
4094133 . Use KMS for signing wallet creation events
@@ -469,6 +473,7 @@ make test
469473Test MPC performance with the integrated benchmark tool:
470474
471475### Keygen Benchmark
476+
472477```bash
473478# Test wallet creation
474479mpcium-cli benchmark keygen 10
@@ -478,6 +483,7 @@ mpcium-cli benchmark --config config.yaml --output results.txt keygen 50
478483```
479484
480485### Signing Benchmark
486+
481487``` bash
482488# Test ECDSA signing
483489mpcium-cli benchmark sign-ecdsa 100 wallet-id
0 commit comments