Beam Fierce Fermion 6.0 Upgrade Guide for pools and exchanges
Beam Fierce Fermion 6.0 includes breaking Hard Fork that will be activated on height 1,280,000 (around 15:30 UTC, 13th of June 2021). It is important to complete all upgrade before that date.
What new in version 6.0
- Smart contracts.
- Confidential Assets support in wallet API. Read more here
- New types of transaction are available in the wallet API:
- Maximum privacy transaction
- Offline transaction
In order to receive these transactions, there are no need to make any changes in code, but your wallet should be connected to the node withowner_key
. If you want to send them you have to explicitly enable them in the wallet, and distinguish new address types. - New address types in wallet API. We highly recommend to use these new addresses, this should bring better user experience both for sending and receiving. For backward compatibility, we preserved old address type.
The difference between new addresses and old are the following
- new addresses are
base58
encoded and have relatively long, old addresses arehex
encoded and have length 64-67 characters - new addresses can hold additional data for transaction, this allows us to make new type of transactions mentioned before and add more when it will be needed
- new addresses are
- Starting from 6.0 Beam address should be validated using the following regular expression:
/[0-9a-zA-Z]{64,500}/
- Minimal fee has changed
- For the regular transaction has been increased up to 100,000 Groth
- For offline and max privacy transaction it became 1,100,000 Groth (+1,000,000 Groth for each shielded output)
Upgrading the node and the wallet
IMPORTANT
Before starting the upgrade procedure it is highly recommended to stop the wallets and back up the wallet.db and node.db files.
- Download the new binaries from Beam Website or build from source
- Enable CA support if needed
- Update address verification. Now,
validate_address
method returns additional info about address:<--
{ "jsonrpc":"2.0", "id": 1, "result" : { "is_valid" : true, "is_mine" : false, "type": "offline", // <---------- NEW "payments": 3 // <---------- NEW } }
type
the type of address, possible values areregular
- regular old-stylehex
encoded address, defaultoffline
- new-stylebase58
encoded address for offline transaction, could be used several times, it has no strong guaranties for privacymax_privacy
- new-stylebase58
encoded address for maximum privacy transaction, could be used oncepublic_offline
- new-stylebase58
encoded address for offline transaction, it's constant, it provided less privacy, you could publish it, designed for donationsregular_new
- new-stylebase58
encoded address for regular mimblewimble transaction
payments
- the number of payments left in case ofoffline
address
If you don't want to support newer type of transactions you could simply allowregular
addresses.
NOTE:offline
address has all the data to make regular online transaction using MimbleWimble protocol. You can make both type of transaction using this type of address. If you want to send regular online transaction you should passoffline: false
{ "jsonrpc":"2.0", "id": 2, "method":"tx_send", "params": { "value": 12342342, "fee": 2, "from": "472e17b0419055ffee3b3813b98ae671579b0ac0dcd6f1a23b11a75ab148cc67", "address": "2DWjfstQoaLMYYgvc4NBTTGqRdyM3nvWxP9bDHN....", // <-- offline address "comment": "thank you!", "asset_id": 1, "offline": false // <-- make regular online payment } }
- regex for the newer address is:
/[0-9a-zA-Z]{64,500}/
it allows both old-style and new-style addresses. - in order to generate new-style address pass
"type"
parameter tocreate_address
method-->
{ "jsonrpc" : "2.0", "id" : 1, "method" : "create_address", "params" : { "type": "max_privacy", // <----- NEW "expiration" : "auto", "comment" : "John Smith" } }
The values for"type"
parameter are the same as described earlier. If you don't specify"type"
"regular"
is used by default to keep backward compatibility. - If you want to send to offline and max privacy addresses run API with
--enable_lelantus
../wallet-api --enable_lelantus -n <node address>
or specify it in config fileenable_lelantus=true