Semi Custodial Wallet

A simple in-app crypto wallet to securely and quickly onboard non-native crypto users to web3 dApps.

postman API collection: https://documenter.getpostman.com/view/18419720/UzQvt5Kf#e58b4757-05ad-45aa-b8fc-82a0f3a66f88

Create Semi Custodial Wallet (Deprecated)

A type of wallet where Shyft holds half of your private keys while the other half is with the client or the end user.

POST /sol/v1/wallet/create_semi_wallet

We create a standard Solana wallet using keypair.generate(). The private key is then encrypted with the provided password and random encryption parameters. In order to decrypt the key, we need the same password and the same encryption parameters.

So, password and encryption parameters act as 2 keys to unlock your wallet.

Shyft never ever stores or logs your password at any time. This can be confirmed with our open source code.

const myHeaders = new Headers();
myHeaders.append("x-api-key", "QEbMrBRQEP92ToRo");
myHeaders.append("Content-Type", "application/json");

const raw = JSON.stringify({
  "password": "Ishkaran"
});

const requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/wallet/create_semi_wallet/", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Decrypt Semi Custodial Wallet (Deprecated)

Decrypt a semi-custodial wallet and get an encrypted private key and decryption key.

You can only get decryption data for semi-custodial wallets created by you.

GET /sol/v1/wallet/decrypt_semi_wallet

const myHeaders = new Headers();
myHeaders.append("x-api-key", "QEbMrBRQEP92ToRo");
myHeaders.append("Content-Type", "application/json");

const raw = JSON.stringify({
  "wallet": "VtkQHQt6GFggoNiWT7Tvafce6cJvCZbzEU8gBTez5rz",
  "password": "Ishkaran"
});

const requestOptions = {
  method: 'GET',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/wallet/decrypt_semi_wallet", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Create Semi Custodial Wallet

A type of wallet where Shyft holds half of your private keys while the other half is with the client or the end user.

POST /sol/v1/semi_wallet/create

We create a standard Solana wallet using keypair.generate(). The private key is then encrypted with the provided password and random encryption parameters. In order to decrypt the key, we need the same password and the same encryption parameters.

So, password and encryption parameters act as 2 keys to unlock your wallet.

Shyft never ever stores or logs your password at any time. This can be confirmed with our open source code.

var myHeaders = new Headers();
myHeaders.append("x-api-key", "20CcwuFeQOIcfuHx");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "password": "Qwerrty@z2"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/semi_wallet/create", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Decrypt Semi Custodial Wallet

Decrypt a semi-custodial wallet and get an encrypted private key and decryption key.

You can only get decryption data for semi-custodial wallets created by you.

Query Params

  • password: Current password of your wallet

  • wallet: Wallet address

GET /sol/v1/semi_wallet/decrypt

var myHeaders = new Headers();
myHeaders.append("x-api-key", "20CcwuFeQOIcfuHx");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/semi_wallet/decrypt?password=Qwerrty@z2&wallet=7pu5mcx2N9bQwqfEe8aQkTzG6zrd9rsFArcvbeY93RkN", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Get Keypair of Semi Custodial Wallet

Query Params

  • password: Current password of your wallet

  • wallet: Wallet address

GET /sol/v1/semi_wallet/get_keypair

var myHeaders = new Headers();
myHeaders.append("x-api-key", "20CcwuFeQOIcfuHx");

var requestOptions = {
  method: 'GET',
  headers: myHeaders,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/semi_wallet/get_keypair?wallet=7pu5mcx2N9bQwqfEe8aQkTzG6zrd9rsFArcvbeY93RkN&password=Qwerrty@z2", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Change password of Semi Custodial Wallet

BODY (raw)

  • current_password: Current password of your wallet

  • new_password: New password of your wallet

  • wallet: Wallet address

POST /sol/v1/semi_wallet/change_password

var myHeaders = new Headers();
myHeaders.append("x-api-key", "20CcwuFeQOIcfuHx");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
  "current_password": "Qwerrty@z2",
  "new_password": "nothingto",
  "wallet": "7pu5mcx2N9bQwqfEe8aQkTzG6zrd9rsFArcvbeY93RkN"
});

var requestOptions = {
  method: 'POST',
  headers: myHeaders,
  body: raw,
  redirect: 'follow'
};

fetch("https://api.shyft.to/sol/v1/semi_wallet/change_password", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Last updated