Stake at least 25 FTT for 0% maker fees see: https://help.ftx.com/hc/en-us/articles/360052410392-FTT-Staking
Monat: September 2021
Bitmex API key
Go to https://www.bitmex.com/app/apiKeys
Se name to „mond.reise“ (or whatever you want). Leave CIDR empty and make sure „Key Permissions“ is set to „Order“. Leave „Withdraw“ unchecked. Then click „Create API Key“

Copy & Paste „ID“ and „Secret“.
Choosing an Exchange
mond.reise currently supports connecting to three derivatives exchanges: BitMEX, FTX and Deribit. More to come. This Article intends to help you with your decision.
BitMEX
Founded in 2014, BitMEX is the oldest player in the derivatives markets. It „invented“ the perpetual swap contracts, which most other exchanges used as reference for their own products. The CEO, Arthur Hayes, worked for Deutsche Bank before he got fired. BitMEX has a controversial reputation, because it has been unregulated and encoutered many law suits with U.S. authorities.
Technically, it has high security standards and a mature trading engine.
Pros:
- -0.01% maker fees (you get paid for every trade)
- Shared margin (Bitcoin)
Cons
- Bitcoin-only deposits
FTX
Pros:
- EUR, USD deposits
- Shared margin (USD and Bitcoin)
Cons:
- High fees (so less expected return)
Deribit
Pros:
- 0% maker fees
- Better reputation than Bitmex
Cons
- Seperated margin for Bitcoin and Ethereum contracts.
- Currently mond.reise only supports Bitcoin trading on Deribit
Conclusion
Chose BitMEX for highest expected returns. FTX is an all-in-one solution with bank transfers. Deribit is a safe alternative with zero fees.
Yoroi private key export
Open yoroi, then open developer tools. In the JS console paste the following code:
/**
* Export all data from an IndexedDB database
*
* @param {IDBDatabase} idbDatabase The database to export from
* @return {Promise<string>}
*/
function exportToJson(idbDatabase) {
return new Promise((resolve, reject) => {
const exportObject = {}
if (idbDatabase.objectStoreNames.length === 0) {
resolve(JSON.stringify(exportObject))
} else {
const transaction = idbDatabase.transaction(
idbDatabase.objectStoreNames,
'readonly'
)
transaction.addEventListener('error', reject)
for (const storeName of idbDatabase.objectStoreNames) {
const allObjects = []
transaction
.objectStore(storeName)
.openCursor()
.addEventListener('success', event => {
const cursor = event.target.result
if (cursor) {
// Cursor holds value, put it into store data
allObjects.push(cursor.value)
cursor.continue()
} else {
// No more values, store is done
exportObject[storeName] = allObjects
// Last store was handled
if (
idbDatabase.objectStoreNames.length ===
Object.keys(exportObject).length
) {
resolve(JSON.stringify(exportObject))
}
}
})
}
}
})
}
/**
* Import data from JSON into an IndexedDB database.
* This does not delete any existing data from the database, so keys may clash.
*
* @param {IDBDatabase} idbDatabase Database to import into
* @param {string} json Data to import, one key per object store
* @return {Promise<void>}
*/
function importFromJson(idbDatabase, json) {
return new Promise((resolve, reject) => {
const transaction = idbDatabase.transaction(
idbDatabase.objectStoreNames,
'readwrite'
)
transaction.addEventListener('error', reject)
var importObject = JSON.parse(json)
for (const storeName of idbDatabase.objectStoreNames) {
let count = 0
for (const toAdd of importObject[storeName]) {
const request = transaction.objectStore(storeName).add(toAdd)
request.addEventListener('success', () => {
count++
if (count === importObject[storeName].length) {
// Added all objects for this store
delete importObject[storeName]
if (Object.keys(importObject).length === 0) {
// Added all object stores
resolve()
}
}
})
}
}
})
}
/**
* Clear a database
*
* @param {IDBDatabase} idbDatabase The database to delete all data from
* @return {Promise<void>}
*/
function clearDatabase(idbDatabase) {
return new Promise((resolve, reject) => {
const transaction = idbDatabase.transaction(
idbDatabase.objectStoreNames,
'readwrite'
)
transaction.addEventListener('error', reject)
let count = 0
for (const storeName of idbDatabase.objectStoreNames) {
transaction
.objectStore(storeName)
.clear()
.addEventListener('success', () => {
count++
if (count === idbDatabase.objectStoreNames.length) {
// Cleared all object stores
resolve()
}
})
}
})
}
Export
var connection = indexedDB.open('yoroi-schema', 16) // change the name and version as needed
connection.onsuccess = e => {
var database = e.target.result
exportToJson(database).then(console.log).catch(console.error)
}
Import
var connection = indexedDB.open('yoroi-schema', 16) // change the name and version as needed
connection.onsuccess = e => {
var database = e.target.result
clearDatabase(database)
importFromJson(database, json).then(console.log).catch(console.error)
}
Eth2 staking
https://launchpad.ethereum.org/en/
- eth1: geth
- eth2: prysm
https://launchpad.ethereum.org/en/checklist/#section-three
curl -H „Content-Type: application/json“ -X POST –data ‚{„jsonrpc“:“2.0″,“method“:“web3_clientVersion“,“params“:[],“id“:67}‘ http://<YourServerLocation>:8545
https://docs.prylabs.network/docs/mainnet/joining-eth2/
./prysm.sh validator accounts import –keys-dir=$HOME/eth2.0-deposit-cli/validator_keys
./prysm.sh validator accounts list
Check validator status: https://beaconscan.com/validator/0x8cfc0c74bcb38e5d0fe4d18d4aca151ea1537a59fbfa06b7388fda12e019aed3ca768d3d5b7020d388d33c9b8f300d0a
https://consensys.net/blog/featured/my-journey-to-becoming-a-validator-on-ethereum-2-0-part-2/
https://medium.com/prysmatic-labs/eth2-slashing-prevention-tips-f6faa5025f50