-
-
Notifications
You must be signed in to change notification settings - Fork 29
B12. Wallet | RPC Wallet API
On this page you will find description of every method in Qwertycoin RPC Wallet API. Qwertycoin RPC Wallet is a HTTP server which provides JSON 2.0 RPC interface for Qwertycoin payment operations and address management. Each method has its own page that can be found by clicking on this method.
More on how to start and operate Qwertycoin RPC Wallet can be found here: Qwertycoin RPC Wallet.
To make a JSON PRC request to your Qwertycoin RPC Wallet you should use POST request that looks like this:
http://<service address>:<service port>/json_rpc
- <service></service> is an IP of Qwertycoin RPC Wallet, if RPC Wallet is located on local machine it is either 127.0.0.1 or localhost,
- <service></service> is Qwertycoin RPC Wallet port, by default it is binded to 8070 port, but it can be manually binded to any port you want, read more about this
reset() method allows you to re-sync your wallet.
Input.
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
viewSecretKey | No | Private view key | string | 4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907 |
No output in case of success.
Important: If the view_secret_key was not pointed out reset() methods resets the wallet and re-syncs it. If the view_secret_key argument was pointed out reset() method substitutes the existing wallet with a new one with a specified view_secret_key and creates an address for it.
Input value example:
{
'params':{
'viewSecretKey':'4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907'
},
'jsonrpc':'2.0',
'id':'test',
'method':'reset'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
}
}
save() method allows you to save your wallet by request.
No input.
No output in case of success.
Input value example:
{
'params':{
},
'jsonrpc':'2.0',
'id':'test',
'method':'save'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
}
}
getViewKey() method returns your view key.
No input.
Output:
Argument | Description | Format | Example |
---|---|---|---|
viewSecretKey | Private view key | string | 4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907 |
Input Example:
{
'params':{
},
'jsonrpc':'2.0',
'id':'test',
'method':'getViewKey'
}
Return value example:
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'viewSecretKey':'4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907'
}
}
getSpendKeys() method returns your spend keys.
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
address | Yes | Valid and existing in this container address | string | KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt |
Output:
Argument | Description | Format | Example |
---|---|---|---|
spendSecretKey | Private spend key | string | 4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907 |
spendPublicKey | Public spend key | string | 4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907 |
Input Example:
{
'params':{
'address':'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
},
'jsonrpc':'2.0',
'id':'test',
'method':'getSpendKeys'
}
Return value example:
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'spendSecretKey':'4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907'
'spendPublicKey':'4a2583e42d010e8aabfed22743789569714196246bf01b5f2fec35af9232d907'
}
}
getAddresses() method returns an array of your RPC Wallet's addresses.
No input.
Output:
Argument | Description | Format | Example |
---|---|---|---|
addresses | Array of strings, where each strings is an address | array | See below |
Input example:
{
'params':{
},
'jsonrpc':'2.0',
'id':'test',
'method':'getAddresses'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'addresses':[
'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt',
'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
]
}
}
createAddress() method creates an additional address in your wallet.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
secretSpendKey | No | Private spend key. If secretSpendKey was specified, RPC Wallet creates spend address | string | |
publicSpendKey | No | Public spend key. If publicSpendKey was specified, RPC Wallet creates view address | string |
Note: If none of the above mentioned parameters were specified, RPC Wallet creates spend address with generated spend key.
Note: both above mentioned parameters can't be present in a single request
Output:
Argument | Description | Format | Example |
---|---|---|---|
address | Created address | string | KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt |
Input value example:
{
'params':{
},
'jsonrpc':'2.0',
'id':'test',
'method':'createAddress'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'address':'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
}
}
deleteAddress() method deletes a specified address.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
address | Yes | An address to be deleted. | string | KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt |
Output:
In case of success returns an empty JSON object.
Input example:
{
'params':{
'address':'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
},
'jsonrpc':'2.0',
'id':'test',
'method':'deleteAddress'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
}
}
getBalance() method returns a balance for a specified address.
Please note: If address is not specified, returns a cumulative balance of all RPC Wallet's addresses.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
address | No | Valid and existing address in this particular wallet | string | KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt |
Output:
Argument | Description | Format | Example |
---|---|---|---|
availableBalance | Available balance of the specified address | uint64 | 123123 |
lockedAmount | Locked amount of the specified address | uint64 | 123123 |
Input example:
{
'params':{
'address':'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
},
'jsonrpc':'2.0',
'id':'test',
'method':'getBalance'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'lockedAmount':210,
'availableBalance':110
}
}
getBlockHashes() method returns an array of block hashes for a specified block range.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
firstBlockIndex | Yes | Starting height | uint32 | 123123 |
blockCount | Yes | Number of blocks to process | uint32 | 20 |
Output:
Argument | Description | Format | Example |
---|---|---|---|
blockHashes | Array of strings, where each element is a block hash | array | example |
Input example:
{
'params':{
'blockCount':11,
'firstBlockIndex':0
},
'jsonrpc':'2.0',
'id':'test',
'method':'getBlockHashes'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'blockHashes':[
'8a6f1cb7ed7a9db4751d7b283a0482baff20567173dbfae136c9bceb188e51c4',
'657cd1c33df7f4250d581c97db665cb4a1856ebfadd6efabaeab745c2c76b1be',
'21047174f74576b6722e72646d7bd553e17d7c9f07fef05151bb1f9df7ed9dd8',
'504b9bfb2cd34531551cb2d68ea3e34e030d991164589ba7ed24e16fed3ea374',
'd9d36b5226d11b2cf60e3cf2038b21032c4ac753eabc32fbdd506158f95a69ca',
'171be105f8e39729838144c78ced336d0ebc29a4bd2c7a22901c0e8c0eaabb42',
'5f7933bd0257649a44e571d59a9f4083297acbdd338c1c0094a7226ade8d0f0f',
'967fd52a57e8193f56329bb37abdddce717098429f62c00776342c605a28e19b',
'6b1a21634a3d72821c43a244af16098eba7c0a59a2e409efa38bd420702f7594',
'7bb5ca944c5f916f80d50246f48789cc4605efd166efc2308553fe0d208fbe12',
'83dfef7c288121d87e60f52c74d3da6b422d4b8581ce732ef8b54273bd6c4f45'
]
}
}
*getTransactionHashes()* method returns an array of block and transaction hashes.
Transaction consists of transfers. Transfer is an amount-address pair. There could be several transfers in a single transaction.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
addresses | No | Array of strings, where each string is an address | array | KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt |
blockHash | Only one of these parameters (blockHash or firstBlockIndex) is allowed. | Hash of the starting block | string | f8f07ace392474bfbdc0fc30749a45f779a8aea10c489a103270f63ed88178ad |
firstBlockIndex | Only one of these parameters (blockHash or firstBlockIndex) is allowed. | Starting height | uint32 | 123123 |
blockCount | Yes | Number of blocks to return transaction hashes from | uint32 | 20 |
paymentId | No | Valid payment_id | string | somePaymentId |
*Note:* if paymentId parameter is set, getTransactionHashes() method returns transaction hashes of transactions that contain specified payment_id. (in the set block range)
Note: if addresses parameter is set, getTransactionHashes() method returns transaction hashes of transactions that contain transfer from at least one of specified addresses.
Note: if both above mentioned parameters are set, getTransactionHashes() method returns transaction hashes of transactions that contain both specified payment_id and transfer from at least one of specified addresses.
Output:
Argument | Description | Format | Example |
---|---|---|---|
items |
Array that contains:
|
array | See below |
Input example:
{
'params':{
'blockCount':100,
'firstBlockIndex':0,
'addresses':[
'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
]
},
'jsonrpc':'2.0',
'id':'test',
'method':'getTransactionHashes'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'items':[
{
'transactionHashes':[
957dcbf54f327846ea0c7a16b2ae8c24ba3fa8305cc3bbc6424e85e7d358b44b
25bb751814dd39bf46c972bd760e7516e34200f5e5dd02fda696671e11201f78
],
'blockHash':'8a6f1cb7ed7a9db4751d7b283a0482baff20567173dbfae136c9bceb188e51c4'
}
]
}
}
getTransactions() method returns an array of block and transaction hashes.
Transaction consists of transfers. Transfer is an amount-address pair. There could be several transfers in a single transaction.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
addresses | No | Array of strings, where each string is an address | array | See below |
blockHash | Only one of these parameters (blockHash or firstBlockIndex) is allowed. | Hash of the starting block | string | 8fa07712cbf22c263834c0ac9a3f05058856a1fa7fa3d3eda332f63519b23bd1 |
firstBlockIndex | Only one of these parameters (blockHash or firstBlockIndex) is allowed. | Starting height | uint32 | 123123 |
blockCount | Yes | Number of blocks to return transaction hashes from | uint32 | 20 |
paymentId | No | Valid payment_id | string | somePaymentId |
Note: if paymentId parameter is set, getTransactions() method returns transactions that contain specified payment_id. (in the set block range)
Note: if addresses parameter is set, getTransactions() method returns transactions that contain transfer from at least one of specified addresses.
Note: if both above mentioned parameters are set, getTransactions() method returns transactions that contain both specified payment_id and transfer from at least one of specified addresses.
Output:
Argument | Description | Format | Example |
---|---|---|---|
items |
Array that contains:
|
array | See below |
Input example:
{
'params':{
'blockCount':1000,
'firstBlockIndex':1,
'addresses':[
'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt',
'KegWNCZv8CQ5YoUZFLAUpxQhHt9FAo5KhXBEaHGTeaDD1t5ZZsKoEMQ8sgUMcyKbwpFJGaaY73Bwf3bUXVLsgAZa7nCv85k',
'KiQ5AonXm7saDTsNEi9uJsb5HswnafrsVLn2vWT1PGGTi1KFbJypdqs7xWrdU54ieXcdQtiV1bDAcVZjYjwFg41v9v7x869'
],
paymentId:'somePaymentId'
},
'jsonrpc':'2.0',
'id':'test',
'method':'getTransactions'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'items':[
{
'blockHash':'01bd06ca731914f27e143bbb902ce0bc05bff13d76faa027ea817e68f217488c',
'transactions':[
{
'fee':-70368475742208,
'extra':'0127cea59bfadc49aa02ed4a225936671e55607b5241621abca2a5e14405906dbb',
'timestamp':1446029698,
'blockIndex':1,
'state':0,
'transactionHash':'06ec210a8359f253f8b2160a0d6040cf89f2a05a553aaa577b7f508ee5d831f9',
'amount':70368475742208,
'unlockTime':11,
'transfers':[
{
'amount':70368475742208,
'type':0,
'address':'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
}
],
'paymentId':'',
'isBase':True
}
]
},
{
'blockHash':'28aa7d32f4274f6387969d7671bd4db98fd871bf0dd510a1df5e2ef4b1d41a35',
'transactions':[
{
'fee':-70368207307776,
'extra':'01a8e6e408282b2ddf343e20d5e9aab283723ba10ab7ab7b3131f6981b02a84431',
'timestamp':1446029698,
'blockIndex':2,
'state':0,
'transactionHash':'922d00d2e6eaed63f62d8e3b968cb08b6ea5c555fe0e6af948ab06efe6eb213a',
'amount':70368207307776,
'unlockTime':12,
'transfers':[
{
'amount':70368207307776,
'type':0,
'address':'KfXkT5VmdqmA7bWqSH37p87hSXBdTpTogN4mGHPARUSJaLse6jbXaVbVkLs3DwcmuD88xfu835Zvh6qBPCUXw6CHK8koDCt'
}
],
'paymentId':'',
'isBase':True
}
]
}
]
}
}
getUnconfirmedTransactionHashes() method returns information about the current unconfirmed transaction pool or for a specified addresses.
Transaction consists of transfers. Transfer is an amount-address pair. There could be several transfers in a single transaction.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
addresses | No | Array of strings, where each string is a valid address | array | See below |
Note: if addresses parameter is set, getUnconfirmedTransactionHashes() method returns transactions that contain transfer from at least one of specified addresses.
Output:
Argument | Description | Format | Example |
---|---|---|---|
transactionHashes | Array of strings, where each string is a hash of an unconfirmed transaction | array | See below |
Input example:
{
'params':{
'addresses':[
'KdbDPifEfmQDZAxMxjrkbPPLHtwv1ezGr2GRB3P377ecToxGkrTFTe2EEjAKbhPqA61FPTi14UpkMVMh2pn1et1y8PdDwn4',
'KfBV6ryfQdrNFhQ3pwnWw21mKomejKpdVj8diVdu5nAdYh7vft5JcMHjMshEcAqAJGaUSmDvTPKTtSWyGxc52R1c4JFVKUP',
'KdA226MT2R3CtZH6oVHVQJ3J1j6HS7ircHNrJMvSb3tRTqnGEBjqojdUHzPKRigkjecw1iwW15qRp4bWvV2dTuz8QNMdAU8'
]
},
'jsonrpc':'2.0',
'id':'test',
'method':'getUnconfirmedTransactionHashes'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'transactionHashes':[
...,
...,
...
]
}
}
getTransaction() method returns information about a particular transaction.
Transaction consists of transfers. Transfer is an amount-address pair. There could be several transfers in a single transaction.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
transactionHash | Yes | Hash of the requested transaction | string | example |
Output:
Argument | Description | Format | Example |
---|---|---|---|
transaction |
Contains:
|
array | See below |
Input example:
{
'params':{
'transactionHash':'92423b0857d36bd172b3f2effbd47ea477bfe0618a50c29d475542c6d5d1b835'
},
'jsonrpc':'2.0',
'id':'test',
'method':'getTransaction'
}
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'transaction':{
'fee':1000000,
'extra':'0130b4472974f2deb9fae7d8fd6602b26396379f3fa05cca2430e10e9e60179f42',
'timestamp':0,
'blockIndex':4294967295,
'state':0,
'transactionHash':'92423b0857d36bd172b3f2effbd47ea477bfe0618a50c29d475542c6d5d1b835',
'amount':-1703701,
'unlockTime':0,
'transfers':[
{
'amount':123456,
'type':0,
'address':'KiQxu9U3F7vdGggu4NQ3CKDhk59vMQyMaFbLtu7TU4TdUkNtuJufqpo67r2e5j5p44SBsBBygaRdmeB4gwH9CF1C3zufGWd'
},
{
'amount':234567,
'type':0,
'address':'KccShmn49D4JZED1g4CM98RpszuMbbDEaYNVpCWjUkDuWPVpo8EEUHaReKeHBmpoNdTENs841QUBRNitFHD7W29oDVfV9ze'
},
{
'amount':345678,
'type':0,
'address':'KfCPBzzR28edvZqLv6t8XVY98jeK6YEjS3birBPTHjY1hXSFM5k5pjUNSur6UhbP8EaqhZ69PVJF991KqCtYFox7NUSvcjw'
}
],
'paymentId':'',
'isBase':False
}
}
}
sendTransaction() method allows you to send transaction to one or several addresses. Also, it allows you to use a payment_id for a transaction to a single address.
Input:
Argument | Mandatory | Description | Format | Example |
---|---|---|---|---|
addresses | No | Array of strings, where each string is an address to take the funds from | array | See below |
transfers | Yes |
Array that contains:
|
array | "amount": 10000000000, "address": "Kcpg4B4kjwefDeBHGyRdUbgeq5FSYHCof7db8uj6dkFAjkvLSQBc3J7iDSwFx75TUj6MnDYKM5Eu3UmtaAJhvEjdKw1Jkz5" |
fee | Yes | Transaction fee. Minimal fee in Qwertycoin network is 1 QWC. This parameter should be specified in minimal available QWC units. For example, if your fee is 1.1 QWC, you should pass it as 110000000 | uint64 | 1000000 |
unlockTime | No | Height of the block until which transaction is going to be locked for spending. | uint64 | 0 |
anonymity | Yes | Privacy level (a discrete number from 1 to infinity). Level 6 and higher is recommended. | uint64 | 6 |
extra | No | String of variable length. Can contain A-Z, 0-9 characters. | string | |
paymentId | No | payment_id | string | somePaymentId |
changeAddress | No | Valid and existing in this container address. | string | KaUMDHkTqSpaDBtK2pZc4MDaveb2DhQfYiUZ2ACy7evsKYYwWefrvhy34RHNChptMPbefT387qpH7MGkWCsdQJAeGpjmhfz |
Note: if container contains only 1 address, changeAddress field can be left empty and the change is going to be sent to this address
Note: if addresses field contains only 1 address, changeAddress can be left empty and the change is going to be sent to this address
Note: in the rest of the cases, changeAddress field is mandatory and must contain an address.
Output:
Argument | Description | Format | Example |
---|---|---|---|
transactionHash | Hash of the sent transaction. | string | 93faedc8b8a80a084a02dfeffd163934746c2163f23a1b6022b32423ec9ae08f |
Input Example:
{
'params':{
'anonymity':0,
'fee':1000000,
'unlockTime':0,
'paymentId':'somePaymentId',
'addresses':[
'KbzvFzjQeWCZawinhkDZUKF6pjDv1TLU678poSAEFKWRL3kgWk48sxCN8z6tpfkzMZ82AQyfhiU4uZ66mnU942AHKokr6PG',
'KiHzZqEzezyaZCP5AdZ1v6K1dAi5aBrU3E9czrZbS6whPUVDBLPLdqU4aiLviNUFfXMEh2kQwSEJGBNpegY6To4wQ9aBwDU',
'KacpStR6z373JoBgBAVoUch9C1Uzbp3p3e95NJkZtcGPe7sJ3AZNzfzL1qzh7zqvekDxvBZepZGqcRsa7MhCmP3NL27GH5V'
],
'transfers':[
{
'amount':123456,
'address':'KbjVbfZkw5eYMMBBYCEoc3TtMe6yNQgPvSepH1KRqxhc3Pr2VBtFLrtD1E6oQAEbtJQsbJrtqWjMoKo1q5HtKAFdUcYBH41'
},
{
'amount':234567,
'address':'Kis97C9AM1PQataUmbpjmXbZz2KSynxgURYb8moceDPXVWBwt4pjGtvAmfY3qmhcrBZgyKfLGnhGCW8LxBHGiDrrC5GLjhD'
},
{
'amount':345678,
'address':'KdAzF8benG4aygdY5v5R5j8bLrzN1hSTfb2c8UneNbNW1VB4QnWD7SSPGpne17HGiLhid1VGq73B3Wc6ZWLaq2GZEaw9hrc'
}
],
'changeAddress':'KbzvFzjQeWCZawinhkDZUKF6pjDv1TLU678poSAEFKWRL3kgWk48sxCN8z6tpfkzMZ82AQyfhiU4uZ66mnU942AHKokr6PG'
},
'jsonrpc':'2.0',
'id':'test',
'method':'sendTransaction'
}
Return value example:
{
'jsonrpc':'2.0',
'id':'test',
'result':{
'transactionHash':'93faedc8b8a80a084a02dfeffd163934746c2163f23a1b6022b32423ec9ae08f'
}
}
- A01. | Contributing
- A02. | Getting Started
- A03. | Qwertycoin Community
- A04. | Qwertycoin Voting
- A05. | Qwertycoin API
- B01. | Generating a Wallet
- B02. | Making a Paper Wallet
- B03. | Wallet Backup
- B04. | Wallet Recovery
- B05. | Wallet Update
- B06. | Using CLI Wallet
- B07. | Using RPC Wallet
- B08. | Using GUI Wallet
- B09. | Using Zero Wallet
- B10. | Using Web Wallet
- B11. | Using Mobile Wallet
- B12. | RPC Wallet API
- B13. | Sign and verify messages
- C01. | Start Masternode
- C02. | Fix Sync Issues
- C03. | Load Checkpoints
- C04. | JSON RPC API
- C05. | HTTP RPC API
- D01. | XMR Stak Guide
- D02. | XMR Stak Linux Guide
- D03. | XMRIG Guide
- D04. | Mining with SBC
- D05. | Cloud Mining
- D06. | Mobile Mining
- D07. | Using a Mining Pool
- D08. | Creating a Mining Pool
- E01. | How to trade QWC on Crex24
- E02. | How to trade QWC on Bitexlive
- E03. | How to trade QWC on Bisq
- G01. | Hosting Block Explorer
- G02. | Hosting Faucet
- G03. | Hosting Web Wallet
- G04. | How to use the QWC Faucet