Articles on: Mixin Safe
This article is also available in:

How to use Bitcoin Core GUI to create Safe?

Prepare Bitcoin Core GUI wallet

Download and install the Bitcoin Core GUI from or update it to version 25.0 and up.
Or you can try to use Bitcoin Core CLI to create Mixin Safe?
Open Bitcoin Core user Interface

Create Mixin Safe

Login to Safe Dashboard, and click "New Safe" to create one.

Name the Safe and select Bitcoin Network

Select Bitcoin Core as the Owner's wallet

It requires generating two wallets on Bitcoin Core when you select Bitcoin Core as the Owner's Safe:

Key wallet that manages keys;
Script wallet for multi-signature transactions and managing UTXOs.

3.1 Create a key wallet

3.2 Open the built-in console

3.3 Generate key wallet address

Input getnewaddress safe legacy on the built-in console to generate the address

Parameter safe: address label
Parameter legacy: it must be in a legacy format; otherwise, the parameter signmessage will not be available.

3.4 Get the public key

Input getaddressinfo 1LAng6tNUobkNmD86KpuHg41j9o1R8ocwS on the built-in console to get the public key, and 1LAng6tNUobkNmD86KpuHg41j9o1R8ocwS is the address generated from the step 3.3.

3.5 Copy-paste the pubkey to the Safe Dashboard, and tap the Next button to save:

Set up members

Add a family member, friend, or coworker you trust as a member and set up a reasonable threshold.

Preview and create the Safe

Active the Safe

6.1 Decode Safe

Copy the script data on step 1 from the Safe Dashboard and decode the data with the command decodescript :

6.2 Create script wallet

Please note that it's necessary to tick the "Disable Private Keys", "Make Blank Wallet ", and "Descriptor Wallet" options.

6.3 Import descriptors to the script wallet

Please switch the console to Script wallet, and take the desc under segwit in the data decoded in step 6.1 and import it into the script wallet as a descriptor in the format '[{"desc": "xxx", "timestamp": "now", "internal":false}]':

importdescriptors '[{"desc":"wsh(thresh(2,pk(03b08eeab9826f10b68569ff9af26ea350675e9d5cf9274c1990cfe5d7cf2b186c),s:pk(0261300cb233f092c6c2f787139624b88ea4c774e779b3a257b36a2fcf186a09a7),sj:and_v(v:pk(026e37ea6e1e9a018753e3289387306d8d605351803497021c1a7cf7e6c0a8dab6),n:older(432))))#p6vc2x03","timestamp":"now","internal":false}]' 
    "success": true

6.4 Sign data

Switch the wallet to the Key wallet in built-in console, and sign the data copied from step 3 on the Safe Dashboard i the following format:

signmessage 1Gz4GoSjNV8MxLFt8bE8JTfqJp6b2bXhvZ APPROVE:c09c6f5f-4461-46a2-a172-4cd970aab955:bc1qpuecw70lwz5jxway09qtjymw7lm0t36jfdymkqddv6a2m8vgvnwqfnt0pq

Please note that the parameter after signmessage is the key wallet address.

6.5 Active the safe

Copy the 6.4 Signed data to the step 5 input box and tap the Activate button:

Wait about 30 seconds for the Safe to be activated successfully; you can check if the Safe deposit address is the same as the script wallet address:

$ getaddressesbylabel ""
  "bc1qpuecw70lwz5jxway09qtjymw7lm0t36jfdymkqddv6a2m8vgvnwqfnt0pq": {
    "purpose": "receive"

Then you can deposit BTC to the Safe's address.


importdescriptors is not available for non-descriptor wallets (code -4)

It's necessary to tick the "Descriptor wallet" when creating the script wallet.

Error: Cannot obtain a lock on data directory /User/xxx/Library/Application Support/Bitcoin.Bitcoin Core is probably already running.

Perhaps the Bitcoin client is running in the background. Try typing . /bitcoin-cli stop in the terminal before opening the Bitcoin Core GUI.

Updated on: 29/02/2024