frostfs-dev-env/docs/chain.md
Stanislav Bogatyrev 14430a9e00 Update README and docs
Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
2020-09-29 15:20:19 +03:00

138 lines
4 KiB
Markdown

# Neo 3 privnet service
A single-node Neo3 privnet deployment running on
[neo-go](https://github.com/nspcc-dev/neo-go).
Contracts deployed:
- NeoFS [mainnet contract](https://github.com/nspcc-dev/neofs-contract)
## .env settings
### CHAIN_URL="https://fs.neo.org/dist/devenv.gz"
URL to get main chain dump. Used on artifact get stage.
### CHAIN_PATH
Path to get main chain dump. If set, overrides `CHAIN_URL`.
### NEOGO_VERSION=0.91.0-6-gd7e13de5
Version on NeoGo container to use in both main privnet and sidechain.
## Main Privnet GAS
There is a wallet with GAS for both main privnet and side chain in
`wallets/wallet.json`.
```
$ neo-go wallet nep5 balance --token GAS \
-w wallets/wallet.json \
--addr NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx \
-r http://main_chain.neofs.devenv:30333
TokenHash: 668e0c1f9d7b70a99dd9e06eadd4c784d641afbc
Amount : 9987.92281340
Updated: 13908
```
If you need GAS to deploy contracts on main privnet or create NeoFS account by
making deposits on NeoFS mainnet contract, you can transfer GAS from that
wallet.
Create new wallet
```
$ neo-go wallet init -a -w wallets/neofs1.json
Enter the name of the account > neofs1
Enter passphrase >
Confirm passphrase >
{
"version": "3.0",
"accounts": [
{
"address": "NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6",
...
wallet successfully created, file location is wallets/neofs1.json
```
Transfer some GAS there
```
$ neo-go wallet nep5 transfer --privnet -w wallets/wallet.json \
--from NTrezR3C4X8aMLVg7vozt5wguyNfFhwuFx \
--to NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6 \
--amount 50 --token GAS \
--rpc-endpoint http://main_chain.neofs.devenv:30333
```
Check it's there
```
$ neo-go wallet nep5 balance --token GAS \
-w wallets/neofs1.json \
--addr NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6 \
-r http://main_chain.neofs.devenv:30333
TokenHash: 668e0c1f9d7b70a99dd9e06eadd4c784d641afbc
Amount : 50
Updated: 14689
```
## Claim GAS from NEO on CN
If there is no enough GAS on `wallets/wallet.json` account, you can claim some
GAS from CN node's wallet from `services/chain/node-wallet.json` and then
transfer it. Wallet password can be found in
`services/chain/protocol.privnet.yml` file.
```
$ neo-go wallet claim -w services/chain/node-wallet.json \
-a NVNvVRW5Q5naSx2k2iZm7xRgtRNGuZppAK \
-r http://main_chain.neofs.devenv:30333
Password >
70e09bbd55846dcc7cee23905b737c63e5a80d32e387bce108bc6db8e641fb90
```
Then you can transfer GAS the same way as it was done in previous section.
```
neo-go wallet nep5 transfer --privnet -w services/chain/node-wallet.json \
--from NVNvVRW5Q5naSx2k2iZm7xRgtRNGuZppAK \
--to NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6 \
--amount 500 --token GAS \
--rpc-endpoint http://main_chain.neofs.devenv:30333
```
## NeoFS GAS deposit
NeoFS identifies users by their Neo wallet key pair. To start using NeoFS in
devenv you need to transfer some GAS from Main privnet account to NeoFS main
contract's account by calling the `deposit` method.
First you need to get your account's LE encoded ScriptHash
```
$ neo-go util convert NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6
Address to BE ScriptHash 82500e2e7de441e1b7378146ad91474f30fa1a0b
Address to LE ScriptHash 0b1afa304f4791ad468137b7e141e47d2e0e5082
Address to Base64 (BE) glAOLn3kQeG3N4FGrZFHTzD6Ggs=
Address to Base64 (LE) Cxr6ME9Hka1GgTe34UHkfS4OUII=
String to Hex 4e586e7a77334a3956764b586a4d314250414a4b3451557054744551753454705536
String to Base64 TlhuenczSjlWdktYak0xQlBBSks0UVVwVHRFUXU0VHBVNg==
```
And call the `deposit` method:
```
$ neo-go contract invokefunction -w wallets/neofs1.json \
-a NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6 \
-r http://main_chain.neofs.devenv:30333 \
af5dc5f7e6a6efc64d679098f328027591a2e518 \
deposit 0b1afa304f4791ad468137b7e141e47d2e0e5082 \
int:50 bytes: -- 0b1afa304f4791ad468137b7e141e47d2e0e5082
Enter account NXnzw3J9VvKXjM1BPAJK4QUpTtEQu4TpU6 password >
Sent invocation transaction 50e25f8e85c3b52dbd99381104cbe8056dad1a6e8809e8bf0e5d0a2527f55932
```