Bitcoin Stats - Blockchain.com

Contrats d'exécution consensuels de VDS et processus du téléchargement à la chaîne

Résumé des contrats d’exécution consensuels
Le concept de base du contrat d’exécution consensuels
Contrats d’exécution consensuels, connu sous le nom de contrat intelligent dans l'industrie de la blockchain, mais l'équipe de VDS estime que ce terme est trop marketing, car nous n'avons pas trouvé à quel point la technologie de programmation contractuelle est intelligente jusqu'à présent, il s'agit simplement d'un système décentralisé dans le réseau distribué, la procédure prédéfinie de comportement consensuel formée par l'édition de code. Dans l'esprit de rechercher la vérité à partir des faits, nous pensons qu'il est plus approprié de renommer le contrat intelligent en tant que contrat d'exécution de consensus. Lorsque les humains combineront la technologie blockchain avec la technologie d'intelligence artificielle de AI à l'avenir, les obstacles à la compréhension des noms sont éliminés.
Le contrat d'exécution consensuel peut être appliqué à de nombreuses industries, telles que la finance, l'éducation, les systèmes administratifs, l'Internet des objets, le divertissement en ligne, etc. Grâce à la technologie de la blockchain, dans un réseau distribué spécifique, un script d'exécution qui est formé par l'édition de pré-code sans aucune intervention de tiers et le comportement de consensus des deux parties ou de plusieurs parties impliquées dans le protocole. Il garantit l’exécution sûre, stable et équitable des droits et intérêts de tous les participants au contrat.
Le contrat d'exécution consensuel a joué un rôle dans l'accélération de l'atterrissage de diverses applications pour le développement de l'industrie de la blockchain et a incité davantage de développeurs à y participer activement, révolutionnant l'expérience réelle des produits de la technologie de la blockchain. Tout découle des contributions exceptionnelles de l'équipe Ethereum, ouvrant une nouvelle porte à l'ensemble de l'industrie.
Structure de base et jonction
L’intégration de EVM
La machine virtuelle Ethereum (EVM) utilise un code machine 256 bits et est une machine virtuelle basée sur la pile utilisée pour exécuter les contrats d'exécution consensuels d'Ethereum. Étant donné que l'EVM est conçu pour le système Ethereum, le modèle de compte Ethereum (Account Model) est utilisé pour la transmission de valeurs. La conception de la chaîne VDS est basée sur le modèle Bitcoin UTXO. La raison de cette conception est, d'une part, c'est en raison de la nécessité de réaliser la fonction d'échange de résonance de VDS et la fonction d'échange inter-chaîne unidirectionnelle de bitcoin à chaîne VDS, qui peuvent réaliser la génération de deux adresses différentes de bitcoin et VDS avec une clé privée. D'autre part, l'équipe VDS estime que la structure sous-jacente des transactions Bitcoin est plus stable et fiable grâce à 10 ans de pratique sociale. Par conséquent, VDS utilise une couche d'abstraction de compte (Account Abstraction Layer) pour convertir le modèle UTXO en un modèle de compte qui peut être exécuté par EVM. De plus, VDS a ajouté une interface basée sur le modèle de compte, afin qu'EVM puisse lire directement les informations sur la chaîne VDS. Il convient de noter que la couche d'abstraction de compte peut masquer les détails de déploiement de certaines fonctions spécifiques et établir une division des préoccupations pour améliorer l'interopérabilité et l'indépendance de la plate-forme.
Dans le système Bitcoin, ce n'est qu'après la vérification du script de déverrouillage (Script Sig) et du script de verrouillage (Script Pub Key) que la sortie de transaction correspondante peut être dépensée.
Par exemple, le script de verrouillage verrouille généralement une sortie de transaction sur une adresse bitcoin (la valeur de hachage de la clé publique). Ce n'est que lorsque les conditions de configuration du script de déverrouillage et du script de verrouillage correspondent, que l'exécution du script combiné affiche le résultat sous la forme True (la valeur de retour de système est 1), de sorte que la sortie de transaction correspondante sera dépensée.
Dans le système distribué de VDS, nous soulignons l'opportunité de l'exécution du contrat d'exécution consensuel. Par conséquent, nous avons ajouté les opérateurs OP_CREATE et OP_CALL au script de verrouillage. Lorsque le système de VDS détecte cet opérateur, les nœuds de l'ensemble du réseau exécuteront la transaction. De cette façon, le rôle joué par le script Bitcoin est plus de transférer les données pertinentes vers EVM, pas seulement en tant que langage de codage. Tout comme Ethereum exécute un contrat d'exécution de consensus, le contrat déclenché par les opérateurs OP_CREATE et OP_CALL, EVM changera son état dans sa propre base de données d'état.
Compte tenu de la facilité d'utilisation du contrat d'exécution du consensus de la chaîne VDS, il est nécessaire de vérifier les données qui déclenchent le contrat et la valeur de hachage de la clé publique de la source de données.
Afin d'éviter que la proportion d'UTXO sur la chaîne de VDS ne soit trop importante, la sortie de transaction de OP_CREATE et OP_CALL est t conçue pour être dépensée. La sortie de OP_CALL peut envoyer des fonds pour d'autres contrats ou adresses de hachage de clé publique.
Tout d’abord, pour le contrat d'exécution consensuel créé sur la chaîne VDS, le système généreraune valeur de hachage de transaction pour l'appel de contrat.Le contrat nouvellement libéré a un solde initial de 0 (les contrats avec un solde initial ne sont pas 0 ne sont pas pris en charge). Afin de répondre aux besoins du contrat d'envoi de fonds, VDS utilise l'opérateur OP_CALL pour créer une sortie de transaction. Le script de sortie du contrat d'envoi de fonds est similaire à :
1: the version of the VM
10000: gas limit for the transaction
100: gas price in Qtum satoshis
0xF012: data to send to the contract (usually using the solidity ABI)
0x1452b22265803b201ac1f8bb25840cb70afe3303:
ripemd-160 hash of the contract txid OP_CALL
Ce script n'est pas compliqué et OP_CALL effectue la plupart du travail requis. VDS définit le coût spécifique de la transaction (sans tenir compte de la situation de out-of-gas) comme Output Value, qui est Gas Limit. Le mécanisme spécifique du Gas sera discuté dans les chapitres suivants. Lorsque le script de sortie ci-dessus est ajouté à la blockchain, la sortie établit une relation correspondante avec le compte du contrat et se reflète dans le solde du contrat. Le solde peut être compris comme la somme des coûts contractuels disponibles.
La sortie d'adresse de hachage de clé publique standard est utilisée pour le processus de base des transactions de contrat, et le processus de transaction entre les contrats est également généralement cohérent. En outre, vous pouvez effectuer des transactions par P2SH et des transactions non standard (non-standard transactions). Lorsque le contrat actuel doit être échangé avec un autre contrat ou une adresse de hachage de clé publique, la sortie disponible dans le compte du contrat sera consommée. Cette partie de la sortie consommée doit être présente pour la vérification des transactions dans le réseau de VDS, que nous appelons la transaction attendue du contrat (Expected Contract Transactions). Étant donné que la transaction attendue du contrat est générée lorsque le mineur vérifie et exécute la transaction, plutôt que d'être générée par l'utilisateur de la transaction, elle ne sera pas diffusée sur l'ensemble du réseau.
Le principe de fonctionnement principal de la transaction attendue du contrat est réalisé par le code OP_SPEND. OP_CREATE et OP_CALL ont deux modes de fonctionnement. Lorsque l'opérateur est utilisé comme script de sortie, EVM l'exécute, lorsque l'opérateur est utilisé comme script d'entrée, EVM ne sera pas exécuté (sinon il provoquera une exécution répétée). Dans ce cas, OP_CREATE et OP_CALL peuvent être utilisés comme Opération sans commandement. OP_CREATE et OP_CALL reçoivent la valeur de hachage de transaction transmise par OP_SPEND et renvoient 1 ou 0 (c'est-à-dire il peut être dépensé ou pas). Il montre l'importance de OP_SPEND dans la transaction attendue de l'intégralité du contrat. Plus précisément, lorsque OP_SPEND transmet la valeur de hachage de transaction à OP_CREATE et OP_CALL, OP_CREATE et OP_CALL comparent si la valeur de hachage existe dans la liste des transactions attendues du contrat. S'il existe, renvoyez 1 pour dépenser, sinon retournez 0, ce n'est pas pour dépenser. Cette logique fournit indirectement un moyen complet et sûr de garantir que les fonds du contrat ne peuvent être utilisés que par le contrat, ce qui est cohérent avec le résultat des transactions UTXO ordinaires.
Lorsque le contrat EVM envoie des fonds à l'adresse de hachage de clé publique ou à un autre contrat, une nouvelle transaction sera établie. À l'aide de l'algorithme de Consensus-critical coin picking, la sortie de transaction la plus appropriée peut être sélectionnée dans le pool de sortie disponible du contrat. La sortie de transaction sélectionnée sera utilisée comme script d'entrée pour exécuter un seul OP_SPEND, et la sortie est l'adresse cible des fonds, et les fonds restants seront renvoyés au contrat, tout en modifiant la sortie disponible pour la consommation. Ensuite, la valeur de hachage de cette transaction sera ajoutée à la liste des transactions attendues du contrat. Lorsque la transaction est exécutée, la transaction sera immédiatement ajoutée au bloc. Une fois que les mineurs de la chaîne ont vérifié et exécuté la transaction, la liste des transactions attendues du contrat est à nouveau parcourue. Une fois la vérification correcte, la valeur de hachage est supprimée de la table. De cette façon, l'utilisation de OP_SPEND peut effectivement empêcher l'utilisation de valeurs de hachage codées en dur pour modifier le coût de la sortie.
La couche d'abstraction des comptes VDS élimine la nécessité pour l'EVM d'accorder trop d'attention à coin-picking. Il lui suffit de connaître le solde du contrat et peut échanger des fonds avec d'autres contrats ou même des adresses de hachage de clé publique. De cette façon, seule une légère modification du contrat d'exécution du consensus Ethereum peut répondre aux exigences de fonctionnement du contrat VDS.
En d'autres termes, tant que le contrat d'exécution consensuel peut être exécuté sur la chaîne Ethereum, il peut s'exécuter sur la chaîne VDS.
Achèvement de AAL
La conception de la chaîne VDS est basée sur le modèle Bitcoin UTXO. La plate-forme générale de contrat d'exécution de consensus utilise le modèle de compte. Étant donné que le contrat en tant qu'entité nécessite un logo de réseau, ce logoest l'adresse du contrat, de sorte que le fonctionnement et la gestion du contrat d'exécution consensuel peuvent être effectués par cette adresse. La couche d'abstraction de compte est ajoutée à la conception du modèle (Account Abstraction Layer, AAL) de chaîne de VDS, qui est utilisée pour convertir le modèle UTXO en un modèle de compte qui peut être exécuté par le contrat.
Pour les développeurs qui exécutent des contrats par consensus, le modèle de compte de la machine virtuelle est relativement simple. Il prend en charge l'interrogation des soldes des contrats et peut également envoyer des fonds pour d'autres contrats. Bien que ces opérations semblent très simples et basiques, toutes les transactions de la chaîne VDS utilisent le langage de script Bitcoin, et il est plus compliqué que prévu d'être implémenté dans la couche d'abstraction de compte de la chaîne VDS basée sur le modèle Bitcoin UTXO. AAL a donc élargi sa base en ajoutant trois nouveaux opérateurs :
OP_CREATE est utilisé pour effectuer la création de contrats intelligents, transmettre le code d'octet transmis via la transaction à la base de données de stockage de contrats de la machine virtuelle et générer un compte de contrat.
OP_CALL est utilisé pour transférer les données pertinentes et les informations d'adresse nécessaires pour appeler le contrat et exécuter le contenu du code dans le contrat. (Cet opérateur peut également envoyer des fonds pour des contrats d'exécution consensuels).
OP_SPEND utilise la valeur de hachage de ID de contrat actuel comme transaction d'entrée HASH ou transaction HASH envoyée à l'UTXO du contrat, puis utilise OP_SPEND comme instruction de dépense pour créer un script de transaction.
Utilisation des Contrats et processus du téléchargement à la chaîne
Rédiger les contrats
Il est actuellement possible d'utiliser le langage Solidity pour rédiger des contrats d'exécution de consensus.
Utilisez Solidity Remix ou un autre Solidity IDE pour l'écriture et la compilation de code.
solidity remix(https://remix.ethereum.org/
Il est recommandé d'utiliser le mode homestead pour compiler.
Il est recommandé d'utiliser la version solidité 0.4.24 (si d'autres versions sont utilisées, cela peut provoquer des erreurs ou des échecs).
La syntaxe Solidity peut être référencée(https://solidity.readthedocs.io/en)
Compiler et déployer les contrats
Fonctionnement du contrat intelligent de vdsd
Examiner les variables de fonctionnement de l'environnement
vdsd -txindex=1 -logevents=1 -record-log-opcodes=1 -regtest=1
> Les tests sous contrat sont effectués dans l'environnement de test. Il est recommandé de tester après avoir atteint une hauteur de 440 blocs.
440 blocs hautement achevés l'opération de retour de fonds après les événements anormaux du contrat (refund) et (revert).
La commande de contrat de déploiement est :
```vds-cli deploycontract bytecode ABI parameters```
- bytecode (string, required) contract bytecode.
- ABI (string, required) ABI String must be JSON formatted.
- parameters (string, required) a JSON array of parameters.
Cette fonction est utilisée pour l'exécution du constructeur du contrat avec les paramètres entrants pour obtenir le ByteCode qui est finalement utilisé pour le déploiement.
(Cette méthode consiste à associer le bytecode à ABI et à le stocker localement pour l'enregistrement. Il peut appeler des méthodes internes localement et renvoyer le bytecode approprié)
```vds-cli createcontract bytecode (gaslimit gasprice senderaddress broadcast)```
- bytecode (string, required) contract bytecode.
- gaslimit (numeric or string, optional) gasLimit, default is DEFAULT_GAS_LIMIT, recommended value is 250000.
- gasprice (numeric or string, optional) gasprice, default is DEFAULT_GAS_PRICE, recommended value is 0.00000040.
- senderaddress (string, optional) The vds address that will be used to create the contract.
- broadcast (bool, optional, default=true) Whether to broadcast the transaction or not.
- changeToSender (bool, optional, default=true) Return the change to the sender.
La valeur de retour est : txid, éxpéditeur, hachage de l'expéditeur160, adresse du contrat
Consulter si la commande a été exécutée avec succès :
```vds-cli gettransactionreceipt txid```
La valeur de retour de txid pour les transactions non contractuelles est vide
La valeur de retour est : Les informations pertinentes de txid sur la BlockHash Hachage du bloc
- blockNumber Hauteur de bloc
- transactionHash Hachage de transaction
- transactionIndex La position de l'échange dans le bloc
- from Hachage de l’adresse de l’expéditeur 160
- to Le destinataire est l'adresse du contrat, le lieu de création de la transaction contractuelle est 00000000000000000000000000000
- cumulativeGasUsed Gas accumulé
- gasUsed Gaz réellement utilisé
- contractAddress Adresse du contrat
- excepted Y a-t-il des erreurs
- exceptedMessage Message d'erreur
-
Il convient de noter que le champ excepted n'est pas None, ce qui indique que l'exécution du contrat a échoué. Bien que la transaction puisse être vérifiée sur la chaîne, cela ne signifie pas que le contrat a été exécuté avec succès, c'est-à-dire que les frais de traitement pour l'exécution de ce contrat ne sont pas remboursables. Les frais de traitement ne seront remboursés que si la méthode revert est entrée dans le contrat, et les frais de méthode ne seront pas remboursés pour la méthode assert.
Appel des contrats
```vds-cli addcontract name contractaddress ABI decription```
- name (string required) contract name.
- contractaddress (string required) contract address.
- ABI (string, required) ABI String must be JSON formatted.
- description (string, optional) The description to this contract.
Cette fonction est utilisée pour ajouter le contrat ABI à la base de données locale.
```vds-cli getcontractinfo contractaddress```
- contractaddress (string required) contract address.
Cette fonction est utilisée pour obtenir les informations du contrat ajouté.
```vds-cli callcontractfunc contractaddress function parameters```
- contractaddress (string, required) The contract address that will receive the funds and data.
- function (string, required) The contract function.
- parameters (string, required) a JSON array of parameters.
Cette fonction renverra le résultat de l'exécution lors de l'appel de la méthode constante ordinaire, comme l'appel de la méthode d'opération de données de contrat retournera la chaîne de format hexadécimal du script d'opération.
```vds-cli sendtocontract contractaddress data (amount gaslimit gasprice senderaddress broadcast)```
- contractaddress (string, required) The contract address that will receive the funds and data.
- datahex (string, required) data to send.
- amount (numeric or string, optional) The amount in " + CURRENCY_UNIT + " to send. eg 0.1, default: 0
- gaslimit (numeric or string, optional) gasLimit, default is DEFAULT_GAS_LIMIT, recommended value is 250000.
- gasprice (numeric or string, optional) gasprice, default is DEFAULT_GAS_PRICE, recommended value is 0.00000040.
- senderaddress (string, optional) The vds address that will be used to create the contract.
- broadcast (bool, optional, default=true) Whether to broadcast the transaction or not.
- changeToSender (bool, optional, default=true) Return the change to the sender.
Cette fonction est utilisée pour envoyer le script d'opération de contrat au contrat spécifié et le faire enregistrer sur la blockchain.
Consultation des résultats d’exécution des contrats
```vds-cli gettransaction txid```
Cette commande est utilisée pour afficher les heures de confirmation de la transaction de portefeuille actuelle.
```vds-cli gettransactionreceipt txid```
Cette commande est utilisée pour vérifier les résultats d'exécution de la création de contrat et des transactions d'appel, s'il y a des exceptions levées et des consommations réelles de GAS.
`${datadir}/vmExecLogs.json` enregistrera les appels de contrat sur la blockchain. Ce fichier servira d'interface externe pour les événements de contrat.
Interface d'appel des contrats
l Interface de création de contrat createcontract
l Interface de déploiement de contrat deploycontract
l Interface d'ajout ABI addcontract
l Interface d’appel des contrats avec l’opération des fons sendtocontract
l Interface de lecture des informations sur les contrats callcontractfunc
l Interface d'acquisition d'informations sur l'exécution des transactions contractuelles gettransactionreceipt
L’expliquation des coûts d’expoitation des contrats
Les coûts de fonctionnement de la création d'un contrat sont toutes des méthodes estimées, et un succès d'exécution à 100% ne peut pas être garanti, car gas limit a une limite supérieure de 50000000, et les contrats dépassant cette limite entraîneront un échec. La chaîne de VDS utilise une méthode de rendre la monnaie, ce qui signifie que même si beaucoup de gaz est envoyé, le mineur n'utilisera pas tout le gas et restituera le gas restant. Alors ne vous inquiétez pas de dépenser trop de gas.
Le coût de création d'un contrat est approximativement de la taille du Byte Code * 300 comme gas limit, le gas price minimum est de 0.0000004, gas price * gas limit est le coût de création d'un contrat.
En ce qui concerne l'exécution de la méthode dans un contrat, le gas requis est estimé. En raison de la congestion du réseau, l'estimation ne garantit pas que 100% peuvent être téléchargés avec succès dans la chaîne. Par conséquent, je crains de tromper et de demander au développeur de vérifier les résultats.
submitted by YvanMay to u/YvanMay [link] [comments]

AMA/Tutorial: Run a full node on AWS free tier with local LAN storage

AMA/Tutorial: Run a full node on AWS free tier with local LAN storage
This is a tutorial/AMA on how you can be running a full node, in the AWS cloud, for very low cost or even free.
I used to run a node on my local network but there is a problem with this; your public IP is broadcast, and then it gets associated with Bitcoin. Node owners are likely to own Bitcoin, and this raises your personal threat profile, validated against my IDS/IPS logs.
Run a VPN? Many VPNs are automatically blocked, or sketchy. Tor is also blocked on a large portion of the internet. Neither provide you with a real static IP, and that helps out the network.
There is a easy solution to this; run a node on the AWS free tier, and use an elastic IP so you have a static address. Bandwidth is free in, and low cost out, and you can control how much of that you use easily, and control your spent. The problem is that Amazon charges a LOT for online storage and even with a 1MB blocksize, the blockchain is very large and growing steadily! We mitigate this by using a VPN back to your network, where you can store the blockchain on a SMB share.
It is not complicated to do, but there are very many moving pieces to keep track of and configure. In order to fully trust your node, the best way is to build it from scratch. This is my goal in walking you through the process.
There are lots of ways to accomplish this same task; I only want to present one that works, and you can go from there. Once you have access to the blockchain in the cloud for reasonable prices, you can also look at things like the Lightning Network.
This article makes four major assumptions:

  1. That you have a OpenVPN server on your network and know how to configure it. I use pfSense and OpenVPN; others will work just as well, but you'll need to do a little work to figure out the particulars. If you don't know how, do not fret! There are loads of good tutorials for just about every platform. Or ask below. I also limited the user with access to the share at the firewall specifically to the IP hosting the share to lower the threat envelope.
  2. That you have the blockchain downloaded locally and reasonably up to date. If you don't, head on over to bitcoin.org and download it for OSX or Windows or Linux, whatever you use for your workstation. Follow the directions to set up the software and download/synchronize it to the network. This will take awhile! Once you've synchronized, copy the data directory to your SMB share you want the AWS instance to access. You could also synchronize everything directly on AWS too, but it will likely take longer and may cost a bit for the bandwidth.
  3. That you're on windows. OSX and Linux will have slightly different processes to connect to the instance via the terminal and SSH. If you need help, ask, and I am sure we can get you fixed up.
  4. That you've read the excellent bitcoin.org full node tutorial here: https://bitcoin.org/en/full-node

With that, on with the show!
First: Head on over to https://aws.amazon.com/ and make yourself an account.
Once you've set up you'll need to start the process of creating a virtual machine on AWS. Look for this graphic and click on it:

Start by launching a new machine

Follow the rabbit hole, and you'll be looking to create a plain jane Amazon AMI Linux instance. It looks like this:

Pick the basic AMI instance
Keep in mind you want to pick the x86 version, which is the default.

Continue clicking, you'll want to select the t2.micro instance that is eligible for the free tier for new accounts.

Pick the free tier. You can also upgrade to the smaller tier for more ram, but the micro works for now.
Now, you're going to need a way to connect to your soon-to-be-created node in the cloud. Amazon uses SSH keys to do this, so the next step means you're going to make some. You need to save this file, as if you lose it, you won't be able to access your node anymore. Much like your wallet private keys!

Beware losing your keys!

If you've made it this far, you're almost launched!
Now we need to convert the key to a format that we can use to connect to the instance from Windows. I recommend using Putty! https://www.putty.org/ if you don't have it already; if you're on OSX or Linux, you likely have what you need already.
Follow the guide here to get connected: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/putty.html

Next you'll need to set up a opening in the firewall if you want incoming connections. This is done by adding to the security group in the "Network and Security" section; edit it to look like this:

Change the inbound security rules for the instance to accept incoming connections on 8333.

The hard part is over!
Optional: Configuring a static IP. Amazon calls their implementation "elastic" IPs, but it's really a static IP that you can move around between instances very easily. It will ensure your public address on AWS does not change; it isn't required, but it is better if you intend on allowing outgoing connections.
Go back to the main dashboard display.
In "Network and Security", click on "Elastic IPs".
Select Allocate New Address (blue button on top) and then select it in the table. In actions, you will see "Associate Address". Select this then assign the address to the instance you have previously configured. Done!

Next up: Log into your machine, and immediately update everything. Use the IP provided by Amazon, or the Elastic IP if you assigned one to the instance in the last step.
type: "sudo yum update"

Now, let's get the VPN configured.
First step is to install OpenVPN. We need to install the extended package library to do this.
type: "sudo amazon-linux-extras install epel"
type: "sudo yum-config-manager --enable epel"
Now you can install OpenVPN.
type: "sudo yum install openvpn"
You will need your credential file from OpenVPN; it's a file you generate that will have a .ovpn extension. But you're going to need to upload it to the instance. You can do this through the scp command on OSX or Linux, but if you're on Windows, you'll need another utility. Get WinSCP here: https://winscp.net/eng/download.php
But we'll have to tell it where your key file is so you can login. Select "New Session", then use the same IP and username as you did to connect before. We'll need to tell it about the key file though! Select the "Advanced" tab then under the SSH section, click on "Authentication" and then select your private key file you generated in the tutorial above.
Connect and upload the .ovpn file that you generated when you added a user for the VPN. This step depends on your OpenVPN configuration - ask below if you have problems.
Next, let's verify we can connect to the VPN!
type: "openvpn --config my-configuration-file-made-by-openvpn.ovpn &"
You will be prompted for a password if you configured one.
Verify operation by pinging your LAN router, e.g.
type: "ping 192.168.2.1" or the address of the SMB server where you shared the information.

Allllrighty! Next up is getting connected to your blockchain. Create a directory where the data directory will be mounted.
type: "mkdir blockchain"
We need to install samba and some utilities to get things mounted.
type: "sudo yum install samba"
type: "sudo yum install cifs-utils"

Now let's mount the folder:
type: "sudo mount -t cifs //192.168.2.100/Bitcoin ./blockchain -o user=bitcoin,vers=2.0,uid=ec2-user,gid=ec2 user,file_mode=0777,dir_mode=0777"
Where " //192.168.2.100/Bitcoin" is the address of the SMB server and share where you put the data directory from your initial sync. If you didn't, and just want to sync everything from AWS, then make sure it's a folder where your user has access. In this case, I'm assuming you've made a SMB user with the name "Bitcoin". The command will prompt you for the password to access the share. The other bits ensure you can have read and write access to the share once it's mounted in AWS.

Now we're ready for some Bitcoin! Props to the tutorial here: https://hackernoon.com/a-complete-beginners-guide-to-installing-a-bitcoin-full-node-on-linux-2018-edition-cb8e384479ea
But I'll summarize for you:
Download and then re-upload with WinSCP, or download directly to your instance with wget, the most current Bitcoin core. In this case, it's bitcoin-0.18.0-i686-pc-linux-gnu.tar.gz downloaded from https://bitcoin.org/en/bitcoin-core/.
Let's verify it hasn't been tampered with once you have it uploaded to the terminal:
type: "sha256sum bitcoin-0.18.0-i686-pc-linux-gnu.tar.gz"
Then compare that with the hash value that's listed in the SHA256SUMS.asc file on bitcoin.org. In this case, "36ce9ffb375f6ee280df5a86e61038e3c475ab9dee34f6f89ea82b65a264183b" all matches up, so we know nobody has done anything evil or nefarious to the file.
Unzip the file:
type: "tar zxvf bitcoin-0.18.0-i686-pc-linux-gnu.tar.gz"
There is a warning about a symbolic link; everything seems to work OK regardless, but if anyone knows what or how to fix, please comment.
We'll need to get some missing libraries before we can run it; these aren't in the basic AMI instance.
type: "sudo yum install glibc.i686"
type: "yum install libgcc_s.so.1"

FINALLY! We are ready to launch the program. Go to the "bin" directory inside where you unzipped the Bitcoin Core tarball. (e.g. /home/ec2-useblockchain/bitcoin-0.18.0/bin)
./bitcoind -datadir=/home/ec2-useblockchain/data
You will see the program either start to sync and download, or start to read the existing blockchain file that you put in the share from before.

Congrats!

There are a couple extra steps to have it automatically start on reboot, but let's see if anyone gets this far first. I use the "screen" program to do this, but there's also a daemon mode, and some other functionality that is discussed in the hackernoon tutorial.
The primary cost will be outgoing bandwidth. AWS charges $0.10/GB beyond 15GB; You can limit the outgoing bandwidth easily according to your budget: https://bitcoin.org/en/full-node#reduce-traffic

Hope this encourages people to try running a free, or very low cost, cloud node, with a substantially reduced threat profile.
submitted by xtal_00 to Bitcoin [link] [comments]

Reddit forensics: Since 16 May 2017, Reddit displays the View Count on your posts. I made 37 posts since then: 29 got < 1000 views, 5 got 1000-2000 views (70-91% upvoted), 2 got 2000-3000 views (82-91% upvoted). And my post arguing "SegWit = MERS" got a whopping 8500 views (only 50% upvoted). Weird!

A few days ago I made a post where I argued that "SegWit = MERS" - tying together the 2010 Mortgage Crisis caused by MERS (Mortgage Electronic Registration Systems or MERS) with an article by legal expert Jimmy Nguyen of nChain:
Risk of SegWit – U.S. Contract Law
https://nchain.com/en/blog/risk-of-segwit-us-contract-law/
My "SegWit = MERS" post argued that SegWit will cause the same kind of catastrophe with Bitcoin that MERS (the Mortgage Electronic Registration Systems company / database) caused with the mortage industry - since SegWit and MERS both encourage deleting the "chain of ownership data".
That "SegWit = MERS" post was about a relatively obscure economic topic - but it got a whopping 8500 views - over 10x the median number of views for my posts.
But now suddenly that one one post arguing "SegWit = MERS" got a whopping 8500 views - but only 50% upvoted.
I have no idea why this happened - and I'm not complaining about these "statistical anomalies" associated with that one post arguing that "SegWit = MERS".
But I do think it is "interesting" that suddenly such an extremely high number of "people" wanted to read (and downvote) a post which made the (relatively obscure) economic argument that "SegWit = MERS".
Did that "SegWit = MERS" post strike a nerve?
And why did it only get downvotes - but no real rebuttals? (One guy linked to some C++ code - but a few lines of C++ code do not refute the argument that SegWit encourages deleting the "chain of ownership data" for bitcoins.)
ಠ_ಠ
Data
Below are the 8 posts (out of 37 total posts) that got over 1000 views, with View Count, Upvoted Percent, and Points - and these 8 posts are sorted from highest to lowest View Count.
So the first post in this listing (the post arguing "SegWit = MERS") is the one that's the "statistical anomaly" or "outlier", with:
SegWit would make it HARDER FOR YOU TO PROVE YOU OWN YOUR BITCOINS. SegWit deletes the "chain of (cryptographic) signatures" - like MERS (Mortgage Electronic Registration Systems) deleted the "chain of (legal) title" for Mortgage-Backed Securities (MBS) in the foreclosure fraud / robo-signing fiasco
65 points - 50% upvoted - 8.5k views
https://np.reddit.com/btc/comments/6oxesh/segwit_would_make_it_harder_for_you_to_prove_you/
CENSORED (twice!) on r\bitcoin in 2016: "The existing Visa credit card network processes about 15 million Internet purchases per day worldwide. Bitcoin can already scale much larger than that with existing hardware for a fraction of the cost. It never really hits a scale ceiling." - Satoshi Nakomoto
416 points - 91% upvoted - 3.0k views
https://np.reddit.com/btc/comments/6l7ax9/censored_twice_on_rbitcoin_in_2016_the_existing/
Skype is down today. The original Skype was P2P, so it couldn't go down. But in 2011, Microsoft bought Skype and killed its P2P architecture - and also killed its end-to-end encryption. AXA-controlled Blockstream/Core could use SegWit & centralized Lightning Hubs to do something similar with Bitcoin
442 points - 82% upvoted - 2.8k views
https://np.reddit.com/btc/comments/6ib893/skype_is_down_today_the_original_skype_was_p2p_so/
Gavin Andresen: "Let's eliminate the limit. Nothing bad will happen if we do, and if I'm wrong the bad things would be mild annoyances, not existential risks, much less risky than operating a network near 100% capacity." (June 2016)
385 points - 89% upvoted - 1.4k views
https://np.reddit.com/btc/comments/6delid/gavin_andresen_lets_eliminate_the_limit_nothing/
What is up with all these Bitcoin devs who think that their job includes HARD-CODING CERTAIN VALUES THAT ARE SUPPOSED TO BE USER-CONFIGURABLE (eg: "seed servers")?
118 points - 79% upvoted - 1.3k views
https://np.reddit.com/btc/comments/6nh00q/what_is_up_with_all_these_bitcoin_devs_who_think/
I just figured out a lot today - about Bitcoin, about scaling, about "Satoshi", about trolls and downvotes and snowflakes. And for the first time in years, I am very, very optimistic about the future of Bitcoin - because of a certain eccentric, arrogant, capitalist mathematician who curses a lot.
71 points - 70% upvoted - 1.2k views
https://np.reddit.com/btc/comments/6kpi36/i_just_figured_out_a_lot_today_about_bitcoin/
"It's funny Core never wanted a compromise until they were losing. Fuck them, they lost, no compromise. Winner takes all, bitches." ~ u/zimmah
192 points - 76% upvoted - 1.1k views
https://np.reddit.com/btc/comments/6d35ie/its_funny_core_never_wanted_a_compromise_until/
u/theymos: "I can't recommend running BIP148 software. Doing so will likely cause you to break away from the real Bitcoin currency on the flag day, create a mess of your datadir which you'll need to manually clean up, and theoretically there are opportunities for losses due to counterfeit BTC." Wow!
144 points - 91% upvoted - 1.1k views
https://np.reddit.com/btc/comments/6e6qri/utheymos_i_cant_recommend_running_bip148_software/
Analysis
So the first post in the list of 8 posts above (the one where I argued "SegWit = MERS") is the "statistical anomaly" or "outlier".
Actually that "SegWit = MERS" post is a "statistical anomaly" in two ways:
  • The "SegWit = MERS" post has an extremely high high View Count compared to all my other posts (8500 views - versus a median of under 1000 views).
  • The "SegWit = MERS" post has (relatively) low Upvoted Percent / Points (only 50% - versus 70%-90% on all my other posts with over 1000 views).
Number of Posts View Count % Upvoted Points
29 < 1000
5 1000-2000 70-91% 70-380
2 2000-3000 82-91% 410-440
1 : "SegWit = MERS" 8500 50% 65
Remarks
I'm not complaining about that post getting "only" 50% Upvoted - or about getting an extremely high View Count of 8500!
But I do think there may be something "interesting" happening here:
  • The vast majority of my posts (29 out of 37) get less than 1000 View Count.
  • Only 5 of my posts (out of 37) got 1000-2000 View Count (and Upvoted Percent 70-91%).
  • Only 2 posts (out of 37) got 2000-3000 View Count (and Upvoted Percent 82-91%).
  • Suddenly, this one weird post (arguing that "SegWit = MERS") got a gigantic 8500 View Count (and Upvoted Percent only 50%).
  • Also, none of the commenters on that post (except for u/metalzip) actually made any arguments. User u/metalzip provided links to some C++ code on GitHub. All the other comments were just content-free drive-by hate.
  • The arguments from u/metalzip may have been serious - but it is not clear whether they were convincing.
  • We still do not have any conclusive evidence showing that SegWit will not cause a catastrophe by encouraging people to delete the "chain of ownership data".
  • Finally, it is disturbing (actually, it is outrageous) that the only hard "facts" being pointed to, in this debate about the specification of the most radical and irresponsible change ever in the economic incentives and security model of what may be the world's next world currency, is a few incrutable lines of C++ code.
  • C++ code is totally adequate for expressing and discussing User Needs and Requirements for important computer systems such as Bitcoin, involving social, economic, legal and "game theory" aspects.
  • If SegWit encourages people to delete the "chain of ownership" data, then this is something we need to talk about - a lot. Just pointing to a few lines of C++ code is not the way to debate this radical change to the economic incentives and security model of Bitcoin.
In other words:
  • Nobody gave a serious rebuttal the to my argument that "SegWit = MERS" - or to legal expert Jimmy Nguyen’s arguments in his bombshell article Risk of SegWit – U.S. Contract Law, where he talked about the legal catastrophe which SegWit could cause by deleting the "chain of ownership data" for bitcoins being transferred among parties.
  • Someone merely pointed to some lines of C++ code - but this does not constitute a refutation of the argument that "SegWit = MERS".
  • More discussion about the possibility that "SegWit = MERS" is warranted (including analysis of social, economic, legal and "game theory" aspects) - beyond someone merely pointed to some lines of C++ code.
The fact is: both MERS and SegWit encourage deleting the "chain of ownership" data - for mortgages and for bitcoins.
This major change to the economic incentives and security model of Bitcoin needs much more debate. Merely pointing to a few lines of C++ code on GitHub does nothing to rebut the arguments made in my "SegWit = MERS" post, or in legal expert Jimmy Nguyen's bombshell article Risk of SegWit – U.S. Contract Law.
In fact, this kind of hand-waving about obscure technical details is exactly what caused the MERS catastrophe in the first place - which is why we should be alarmed that economically and legally ignorant devs paid by banksters are trying to pull the exact same hocuc-pocus on us again - now with SegWit.
Suddenly 8500 "people" wanted to read an obscure economic argument that "SegWit = MERS" - and one of them rebutted it... with some lines of C++ code??
Previously, I have have pointed out that many devs at Core & AXA-owned Blockstream devs are clueless about economics:
Adam Back & Greg Maxwell are experts in mathematics and engineering, but not in markets and economics. They should not be in charge of "central planning" for things like "max blocksize". They're desperately attempting to prevent the market from deciding on this. But it will, despite their efforts.
https://np.reddit.com/btc/comments/46052e/adam_back_greg_maxwell_are_experts_in_mathematics/
Greg Maxwell u/nullc says "The next miner after them sets their minimum [fee] to some tiny value ... and clears out the backlog and collects a bunch of funds that the earlier miner omitted" - like it's a BAD THING. Greg is proposing a SUPPLY-LIMITING AND PRICE-FIXING CARTEL, like it's a GOOD THING.
https://np.reddit.com/btc/comments/5i4885/greg_maxwell_unullc_says_the_next_miner_afte
Gregory Maxwell nullc has evidently never heard of terms like "the 1%", "TPTB", "oligarchy", or "plutocracy", revealing a childlike naïveté when he says: "‘Majority sets the rules regardless of what some minority thinks’ is the governing principle behind the fiats of major democracies."
https://np.reddit.com/btc/comments/44qr31/gregory_maxwell_unullc_has_evidently_never_heard/
Wladimir van der Laan (Lead Maintainer, Bitcoin Core) says Bitcoin cannot hard-fork, because of the "2008 subprime bubble crisis" (??) He also says "changing the rules in a decentralized consensus system is a very difficult problem and I don’t think we’ll resolve it any time soon." But Eth just did!
https://np.reddit.com/btc/comments/4ttv32/wladimir_van_der_laan_lead_maintainer_bitcoin/
So now, 8500 "people" wanted to read an obscure economic argument that "SegWit = MERS" - and half of the voters them downvoted it - and one of them rebutted it... with some lines of C++ code (which hardly anyone in the community is able to read)??
This is how we are going to decide major questions such as the possibility that "SegWit = MERS"??
ಠ_ಠ
How this analysis was performed
Since 16 May 2017, you can check the View Count for each of your posts on Reddit - if you're logged in.
And there is also a special URL syntax you can use to search for posts on Reddit in a custom date range.
Here's the announcement from Reddit on 16 May 2017, about the new "View Count" statistic:
[reddit change] Post view counts, users here now and traffic page updates
https://np.reddit.com/changelog/comments/6bj0iy/reddit_change_post_view_counts_users_here_now_and/
Here's the explanation of how to use CloudSearch to search for posts on Reddit within a custom date range:
Use Cloudsearch to search for posts on reddit within a time frame
https://np.reddit.com/reddittips/comments/2ix73n/use_cloudsearch_to_search_for_posts_on_reddit/
Here's the CloudSearch URL I used to filter my posts on Reddit from May 15, 2017 to July 27, 2017:
https://np.reddit.com/btc/search?sort=relevance&q=author%3A%22ydtm%22+timestamp%3A1494806400..1500938780&restrict_sr=on&syntax=cloudsearch
If you want to customize the above CloudSearch URL for yourself (and for different dates), then make the following 2 changes:
  • Change my Reddit name ydtm to your Reddit name, and
  • Use a site like Epoch Converter to convert the "from" and "to" dates to UNIX timestamp format, and change the date range 1494806400..1500938780 to your date range in the URL above.
Conclusion
So the new View Count statistic could provide useful new information about who is viewing and reacting to your posts.
Maybe someone could come up with some theories why 8500 "people" would view a post making the rather obscure economic argument that "SegWit = MERS".
Maybe arguing that "SegWit = MERS" struck a nerve?
Meanwhile, more discussion is needed about the bombshell article Risk of SegWit – U.S. Contract Law, where Jimmy Nguyen talked about the legal catastrophe which SegWit could cause by deleting the "chain of ownership data" for bitcoins being transferred among parties.
submitted by ydtm to btc [link] [comments]

everiToken's RocksDB

everiToken’s RocksDB
The boom of bitcoin prices brought the technology of block chain to the public, opened the era of block chain version 1.0. Later, the smart contract made the Ethereum known to everyone and opened up the era where everyone can Issue Tokens. However, block chain technology has a certain threshold, which is difficult for non programmers.
The block chain can be defined as a comprehensive technical solution consisting of encryption, producing blocks, consensus, storage and so on. Each individual can be used as a solution to practical problems. Similar to the traditional Internet industry, the development of block chain network can not be separated from three parts: computing power, bandwidth and storage.
The Ethereum represented the block chain version 2.0 which received hot attention. Not only for its smart contract, the underlying storage technology is also the focus of the technology enthusiasts.
From the Ethereum whitepaper we knew that Ethereum uses LevelDB as its Database. The Ethereum Clients can download the data from the nearby nodes and save them locally.
Ethereum’s LevelDB
LevelDB is Google’s open source key-value database, based on LSM algorithm. It can achieve efficient performance and support billions data.
We have known that a block contains a block header and a block body, but how is a block stored? The block information and transactions are finally stored in the LevelDB database, which maybe like datadigeth/chaindata. All data are stored in key-value pairs in Ethereum. In general, key is related to the hash while value is the data’s RLP code.
The advantages of using LevelDB database are:
- There is no need to run additional software as the LevelDB is in the process database.
- Using C++ native implementation, supports all cross platform operations supported by Go language.
- Key-value storage, value can be arbitrary binary encoding, no architectural constraints.
- Mature data storage, delamination of disks.
- Mature tracking records, allows many companies and other database to operate above it.
With smart contract’s storage standard, combined account’s StorageRoot to traverse all the key-value pairs in the LevelDB database. According to encoding rules, data reverse analysis and display are implemented which provides convenient and quick data operations for Dapp’s development and debugging.
Ethereum uses hash to identify the content. However hash is a uniform random distribution of identifiers. LevelDB stores keys alphabetically on disk so accessing hash-related values is costly. For a state tree, there will be hundreds of thousands of nodes that scatter and point to the disk. If there is no specific database modeled for Ethereum, it will be very difficult to optimize.
LevelDB is originally designed by Google for the disk backup memory database, performed well at first. As more and more disk access is needed, performance will gradually decrease. In addition, LevelDB is most efficient in using single thread insertion. Facebook’s RocksDB tries to solve these problems and multithreadeded background compression. Both written in C++, the RocksDB is more powerful.
The data storage scheme in Ethereum is not the perfect solution. Because of the characteristic of MPT, the update operation of the massive data storage account will bring the index level data access, which makes the execution of Ethereum’s smart contract very inefficient.
everiToken’s RocksDB
RocksDB is a key value database developed by Facebool. It has done a lot of optimization on the basis of LevelDB, which not only improves the performance, but also greatly increases the extensibility. RocksDB is a LevelDB’s upgrade version. In benchmarking, RocksDB performs better as well.
The design of everiToken not only draws the advantages of traditional matue database like LevelDB, but also takes into account the expensive cost of storage of pure memory(such as EOS.IO). The hybrid method can guarantee speed demand and ensure a certain economy. In general, it has high cost performance.
First, everiToken adopted RocksDB’s PlainTableFormat to its own characteristics. PlainTable is the RocksDB’s SST file format, optimized for pure memory queries with low latency or real low latency media. It has following advantages:
- Build a memory index to replace ordinary binary search with hash + binary search. That is to say, the keyword is not directly used as an array subscript, but the corresponding subscript is calculated according to the keyword, which is more in line with the complex storage.
- Bypass block catching to avoid block replication and LRU cache maintenance overhead.
- Avoid using any memory copy when querying. This method can reduce memory usage and speed up operation.
In short, PlainTableFormat does not optimize query performance maximization, but rather balances between query performance and memory consumption. PlainTable query performance is not as good as those hash tables that are specially designed, but it keeps the memory overhead at the lowest level while maintaining the same order of magnitude.
Secondly, everiToken's RocksDB adopts PrefixKey mode. Most LSM engines do not support efficient range lookup because all data files are accessed during lookup operations. For example, LevelDB does not support multithread merging. The support for key range lookup is still very simple, and no optimization measures are taken. RocksDB optimizes the corresponding underlying implementations based on these application scenarios.
The key point of PrefixKey's pattern design is to save time for lookup and to store key with the same prefix in the same place, so that all data will not be retrieved during the search, which greatly improves the use efficiency of the database.
Finally, everiToken tunes the parameters of RocksDB according to the characteristics of itself, which improves the database performance in various scenarios. Parameter tuning includes many aspects, not only some digital adjustments, but also related network structure adjustments and some function adjustments.
RocksDB parameter adjustment not only needs to support the configuration of various parameters in high pressure random reading, random writing, or the performance of the two, but also to prevent network problems, data security, and so on.
EveriToken uses RocksDB to make multifaceted modification according to the actual needs of its own project. This hybrid method is guaranteed in the aspects of scalability, performance, speed and so on. At the same time, it can also ensure a certain economy. Overall, the cost performance is very high, and the data storage technology may be popular in the future.
Conclusion
In the Internet world, computing power, storage and bandwidth are three core configurations, and block chains are the same. However, the public chain is in the early stage of development, and there are many places to be used for reference. The RocksDB database is a traditional industrial database model. This behavior on the shoulders of giants will be more convincing and more feasibility.
From above, in addition to the security of the traditional database, it also has a high cost performance, and is more in line with the practical application scene.
submitted by everiToken to u/everiToken [link] [comments]

everiToken's RocksDB • u/everiToken

everiToken’s RocksDB
The boom of bitcoin prices brought the technology of block chain to the public, opened the era of block chain version 1.0. Later, the smart contract made the Ethereum known to everyone and opened up the era where everyone can Issue Tokens. However, block chain technology has a certain threshold, which is difficult for non programmers.
The block chain can be defined as a comprehensive technical solution consisting of encryption, producing blocks, consensus, storage and so on. Each individual can be used as a solution to practical problems. Similar to the traditional Internet industry, the development of block chain network can not be separated from three parts: computing power, bandwidth and storage.
The Ethereum represented the block chain version 2.0 which received hot attention. Not only for its smart contract, the underlying storage technology is also the focus of the technology enthusiasts.
From the Ethereum whitepaper we knew that Ethereum uses LevelDB as its Database. The Ethereum Clients can download the data from the nearby nodes and save them locally.
Ethereum’s LevelDB
LevelDB is Google’s open source key-value database, based on LSM algorithm. It can achieve efficient performance and support billions data.
We have known that a block contains a block header and a block body, but how is a block stored? The block information and transactions are finally stored in the LevelDB database, which maybe like datadigeth/chaindata. All data are stored in key-value pairs in Ethereum. In general, key is related to the hash while value is the data’s RLP code.
The advantages of using LevelDB database are:
- There is no need to run additional software as the LevelDB is in the process database.
- Using C++ native implementation, supports all cross platform operations supported by Go language.
- Key-value storage, value can be arbitrary binary encoding, no architectural constraints.
- Mature data storage, delamination of disks.
- Mature tracking records, allows many companies and other database to operate above it.
With smart contract’s storage standard, combined account’s StorageRoot to traverse all the key-value pairs in the LevelDB database. According to encoding rules, data reverse analysis and display are implemented which provides convenient and quick data operations for Dapp’s development and debugging.
Ethereum uses hash to identify the content. However hash is a uniform random distribution of identifiers. LevelDB stores keys alphabetically on disk so accessing hash-related values is costly. For a state tree, there will be hundreds of thousands of nodes that scatter and point to the disk. If there is no specific database modeled for Ethereum, it will be very difficult to optimize.
LevelDB is originally designed by Google for the disk backup memory database, performed well at first. As more and more disk access is needed, performance will gradually decrease. In addition, LevelDB is most efficient in using single thread insertion. Facebook’s RocksDB tries to solve these problems and multithreadeded background compression. Both written in C++, the RocksDB is more powerful.
The data storage scheme in Ethereum is not the perfect solution. Because of the characteristic of MPT, the update operation of the massive data storage account will bring the index level data access, which makes the execution of Ethereum’s smart contract very inefficient.
everiToken’s RocksDB
RocksDB is a key value database developed by Facebool. It has done a lot of optimization on the basis of LevelDB, which not only improves the performance, but also greatly increases the extensibility. RocksDB is a LevelDB’s upgrade version. In benchmarking, RocksDB performs better as well.
The design of everiToken not only draws the advantages of traditional matue database like LevelDB, but also takes into account the expensive cost of storage of pure memory(such as EOS.IO). The hybrid method can guarantee speed demand and ensure a certain economy. In general, it has high cost performance.
First, everiToken adopted RocksDB’s PlainTableFormat to its own characteristics. PlainTable is the RocksDB’s SST file format, optimized for pure memory queries with low latency or real low latency media. It has following advantages:
- Build a memory index to replace ordinary binary search with hash + binary search. That is to say, the keyword is not directly used as an array subscript, but the corresponding subscript is calculated according to the keyword, which is more in line with the complex storage.
- Bypass block catching to avoid block replication and LRU cache maintenance overhead.
- Avoid using any memory copy when querying. This method can reduce memory usage and speed up operation.
In short, PlainTableFormat does not optimize query performance maximization, but rather balances between query performance and memory consumption. PlainTable query performance is not as good as those hash tables that are specially designed, but it keeps the memory overhead at the lowest level while maintaining the same order of magnitude.
Secondly, everiToken's RocksDB adopts PrefixKey mode. Most LSM engines do not support efficient range lookup because all data files are accessed during lookup operations. For example, LevelDB does not support multithread merging. The support for key range lookup is still very simple, and no optimization measures are taken. RocksDB optimizes the corresponding underlying implementations based on these application scenarios.
The key point of PrefixKey's pattern design is to save time for lookup and to store key with the same prefix in the same place, so that all data will not be retrieved during the search, which greatly improves the use efficiency of the database.
Finally, everiToken tunes the parameters of RocksDB according to the characteristics of itself, which improves the database performance in various scenarios. Parameter tuning includes many aspects, not only some digital adjustments, but also related network structure adjustments and some function adjustments.
RocksDB parameter adjustment not only needs to support the configuration of various parameters in high pressure random reading, random writing, or the performance of the two, but also to prevent network problems, data security, and so on.
EveriToken uses RocksDB to make multifaceted modification according to the actual needs of its own project. This hybrid method is guaranteed in the aspects of scalability, performance, speed and so on. At the same time, it can also ensure a certain economy. Overall, the cost performance is very high, and the data storage technology may be popular in the future.
Conclusion
In the Internet world, computing power, storage and bandwidth are three core configurations, and block chains are the same. However, the public chain is in the early stage of development, and there are many places to be used for reference. The RocksDB database is a traditional industrial database model. This behavior on the shoulders of giants will be more convincing and more feasibility.
From above, in addition to the security of the traditional database, it also has a high cost performance, and is more in line with the practical application scene.
submitted by Brady_everiToken to u/Brady_everiToken [link] [comments]

launch two masternode esbc on one vps WARNING!!! VERY BAD ENGLISH!!! How to install multiple qt coin wallets 4 How to invoke your first smart contract from the geth console (ABI) - Ethereum from scratch 3 Compile and run your first smart contract against local private node - Ethereum from scratch Запуск 2 masternode esbc на одном vps - YouTube

Find live Bitcoin stats, including market price, mining revenue, number of Bitcoin transactions and more. Explore detailed Bitcoin data today. - Blockchain If you want to store them in D:\BitcoinData then click on "Properties" of a shortcut to bitcoin-qt.exe and add -datadir=D:\BitcoinData at the end as an example: "C:\Program Files (x86)\Bitcoin\bitcoin-qt.exe" -datadir=d:\BitcoinData Start Bitcoin, now you will see all the files are created in the new data directory. Linux . By default Bitcoin will put its data here: ~/.bitcoin/ You need to do ... Total Bitcoin (sum of all currently existing Bitcoin) 18,526,858 BTC: Market Capitalization (market value of all currently existing Bitcoin) $242,892,661,625 USD: Bitcoin Price (Bitcoin price history charts) 1 BTC = $ 13,110.3 USD (2020-10-26 03:01:09 UTC) bitasset: 13,111.27 USD (2020-10-26 03:00:03 UTC) hitbtc: 13,083.62 USD (2020-10-26 03:00 ... Bitcoin-qt datadir alternative storage location. Close • Posted by just now. Bitcoin-qt datadir alternative storage location. I tried asking this in the bitcoincore sub but it only has a handful of members, so i now try here. When bitcoin-qt is first started, it asks for the location of datadir. If it is set to a custom location, it remembers it on subsequent launches. Where is this location ... However, dealing with the block chain comes at a price. An ever-growing data set causes smaller hard drives to fill up quickly. Furthermore, a new wallet can’t be used until the full block chain is downloaded and processed, which can take several hours on mid-range equipment. These problems can be solved by moving and copying Bitcoin Core’s data directory. This article describes two ...

[index] [40026] [47427] [4390] [10857] [37960] [12132] [5423] [25344] [1763] [11709]

launch two masternode esbc on one vps WARNING!!! VERY BAD ENGLISH!!!

esbcoind -datadir=.esbcoin2 -daemon - laucnh wallet daemon of second masternode esbcoin-cli -datadir=.esbcoin2 masternode status - check status second masternode Website: https://esbc.pro You may want to keep wallets on a USB stick or have multiple instances of the same coin but with separate wallets on the same computer. These simple instructions tell you how. It assumes you know ... geth --datadir "(dir)" --nodiscover --rpc --rpcport "8545" --rpccorsdomain "*" console 2 > console.log Add the rpc flags above - they are all necessary (have removed all other flags to hide noise ... Список команд: cp -p -r .esbcoin .esbcoin2 - копировать папку блокчейна, esbcoin2 можно заменить на любое другое название ... Welcome to part 4 of my Ethereum from scratch series. In the previous video we showed how to create and deploy your first smart contract on your local private test network and this week we take it ...

#