All pages
Powered by GitBook
1 of 16

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Bucket Operation

Create bucket

Command description: Enter createBucket to create a bucket according to the BucketName. Each bucket can be set with a different redundancy policy. The redundancy policy is multi-replica or erasure code. The redundancy level can be determined by adjusting the number of the data block and parity block. 3 data blocks and erasure code of 2 parity blocks are used by default, the loss of two blocks is tolerable.

mefs provides dedicated encrypted storage space (LFS) for each user, each storage space contains multiple buckets, buckets are containers that users use to store objects, and each bucket contains multiple objects. We can think of objects as files. The redundancy policy of a bucket can be specified at creation time (all objects stored in the bucket use this redundancy policy).

When creating a bucket policy, the value of dc+pc should be less than the number of providers in the group where the current user belongs. Users can modify the number of dc and pc according to their own needs.

Check bucket list

Command description: Enter listBuckets to display all buckets created by this user, including the name of each bucket, creation time, redundancy policy and redundancy parameters (DataCount, ParityCount).

Check bucket information

Command description: If BucketName exists, entering headBucket displays its creation time, redundancy policy and redundancy parameters. If BucketName does not exist, it displays that bucket does not exist.

mefs-user lfs createBucket --bn=test2 --dc=3 --pc=6	
Name: test2				
Bucket ID: 2
Creation Time: 2022-03-23 14:42:06 CST
Modify Time: 2022-03-23 14:42:06 CST
Object Count: 0
Policy: erasure code				
Data Count: 3								
Parity Count: 6				
Reliability: High
Used Bytes: 0 B
mefs-user lfs listBuckets
List buckets:

Name: test
Bucket ID: 1
Creation Time: 2022-03-23 14:25:41 CST
Modify Time: 2022-03-23 14:38:44 CST
Object Count: 1
Policy: erasure code
Data Count: 7
Parity Count: 7
Reliability: High
Used Bytes: 10.17 MiB

Name: test2
Bucket ID: 2
Creation Time: 2022-03-23 14:42:06 CST
Modify Time: 2022-03-23 14:42:06 CST
Object Count: 0
Policy: erasure code
Data Count: 3
Parity Count: 6
Reliability: High
Used Bytes: 0 B
mefs-user lfs headBucket --bn=test2
Head bucket:
Name: test2
Bucket ID: 2
Creation Time: 2022-03-23 14:42:06 CST
Modify Time: 2022-03-23 14:42:06 CST
Object Count: 0
Policy: erasure code
Data Count: 3
Parity Count: 6
Reliability: High
Used Bytes: 0 B

Start user in docker

Upload and Download

Upload file

Command description: Entering putObject to upload an object named ObjectName into BucketName; if the bucket does not exist, it will display that the bucket does not exist; if the object already exists, it will display that the object already exists.

echo "hello MEMO" >~/test.file
mefs-user lfs putObject --bn=test2 --on=obj1 --path=~/test.file

{"level":"DEBUG","time":"2022-03-23T15:20:32+08:00","logger":"httpio","caller":"httpio/reader.go:51","msg":"push stream: /rpc/streams/v0/push/fce925c8-7d24-4cf7-9d3f-0a370fa69d85"}
Put object:
Name: obj1
Bucket ID: 2
Object ID: 0
ETag: b1946ac92492d2347c6235b4d2611184
Size: 6 B
UsedBytes: 2.18 MiB
Enc Method: aes
State: total 9, dispatch 0, done 0, confirm 0
Creation Time: 2022-03-23 15:20:32 CST
Modify Time: 2022-03-23 15:20:32 CST

Check file information

Command description: Enter listObjects to list all objects in BucketName, including object size, creation time, MD5 value, and the most recent challenge time.

Download file

Command description: Enter getObject to download an object named ObjectName from BucketName; if the bucket does not exist, it displays that the bucket does not exist; if the object does not exist, it displays that the object does not exist.

mefs-user lfs listObjects --bn=test2
List objects:

Name: obj1
Bucket ID: 2
Object ID: 0
ETag: b1946ac92492d2347c6235b4d2611184
Size: 6 B
UsedBytes: 2.18 MiB
Enc Method: aes
State: total 9, dispatch 2, done 2, confirm 0
Creation Time: 2022-03-23 15:20:32 CST
Modify Time: 2022-03-23 15:20:32 CST
mefs-user lfs getObject --bn=test2 --on=obj1 --path=~/test.txt
download: 100% [=======================================================================================================================] ( 6/ 6B, 0.302 kB/s)
object: obj1 (etag: b1946ac92492d2347c6235b4d2611184) is stored in: /home/mtest/test.txt

How to use user

This document is detailed about how to use user node, the installation guide is in another document. Use LFS command to operate upload and download functions.

lfs command

Introduction

This command creates, uploads, downloads, and views a collection of containers and files for the user.

Usage

Subcommands

Introduction

This command creates buckets

Usage

Options

Example

Bucket name: test, storage policy: erasure code, number of data blocks: 10, number of check blocks 5

Introduction

This command is used to view the status of all buckets

Usage

Introduction

This command is used to view all the information of the specified bucket, the following is an example (test is the bucket name)

Usage

Introduction

This command specifies the file for upload

Usage

USAGE: mefs-user lfs putObject [command options] [arguments...]

OPTIONS: --bucket value, --bn value use bucket name --object value, --on value file name after upload --path value upload file path --etag value select verification method (default: md5) --enc value Select encryption method (default: aes) --help, -h View help

Introduction

This command is used to view the specified file status

Usage

Example

Introduction

Download the file to the specified path

Usage

Example

Introduction

View all file information of a specified bucket

Usage

Example

Introductioin

delete specified file

Usage

Example

Introduction

Download objects using rpc

Usage

Example

Introduction

Display the storage information of the node

Example

Introduction

View the bucket user list

Example

./mefs-user lfs

COMMANDS:
   createBucket    create bucket
   listBuckets     list buckets
   headBucket      head bucket info
   putObject       put object
   headObject      head object
   getObject       get object
   listObjects     list objects
   delObject       delete object
   downloadObject  download object using rpc
   showStorage     show storage info
   getPros         get pros of bucket
   help, h         Shows a list of commands or help for one command
1 createBucket subcommand
2 listBuckets subcommand
3 headBucket subcommand
4 putObject subcommand
5 headObject subcommand
6 getObject subcommand
7 listObjects subcommand
8 delObject subcommand
9 downloadObject subcommand
10 showStorage subcommand
11 getPros subcommand
./mefs-user lfs createBucket -h
--bucket value, --bn value set bucket name 
--policy value, --pl value set erasure code (1) or multi-copy policy (2) (default is 1) 
--datacount value, --dc value set Number of data blocks (default is 3) 
--paritycount value, --pc value Set the number of parity blocks (default is 2)
./mefs-user lfs createBucket  --bn=test  --pl=1 --dc==10 --pc=5
./mefs-user lfs listBuckets
./mefs-user lfs headBucket   --bn=test
./mefs-user lfs putObject -h

Example

```shell
./mefs-user lfs putObject --bn=test --on=1   --path=./index.txt
./mefs-user lfs headObject -h

USAGE:
   mefs-user lfs headObject [command options] [arguments...]

OPTIONS:
   --bucket value, --bn value  bucketName
   --object value, --on value  objectName
   --all                       show all information (default: false)
   --help, -h                  show help (default: false)
./mefs-user lfs headObject  --bn=test --on=1
USAGE:
   mefs-user lfs getObject [command options] [arguments...]

OPTIONS:
   --bucket value, --bn value  bucketName
   --object value, --on value  objectName
   --cid value                 cid name
   --start value               start position (default: 0)
   --length value              read length (default: -1)
   --path value                stored path of file
   --help, -h                  show help (default: false)
./mefs-user lfs getObject --bn=test --on=1  --path=./index.html
USAGE:
   mefs-user lfs listObjects [command options] [arguments...]

OPTIONS:
   --bucket value, --bn value  bucket name, priority
   --marker value              key start from, marker should exist
   --prefix value              prefix of objects
   --delimiter value           delimiter to group keys: '/' or ''
   --maxKeys value             number of objects in return (default: 1000)
   --help, -h                  show help (default: false)
./mefs-user lfs listObjects
USAGE:
   mefs-user lfs delObject [command options] [arguments...]

OPTIONS:
   --bucket value, --bn value  bucketName
   --object value, --on value  objectName
   --help, -h                  show help (default: false)
./mefs-user lfs delObject --bn=test --on=1
USAGE:
   mefs-user lfs downloadObject [command options] [arguments...]

OPTIONS:
   --bucket value, --bn value  bucketName
   --object value, --on value  objectName
   --cid value                 cid name
   --start value               start position (default: 0)
   --length value              read length (default: -1)
   --path value                stored path of file
   --help, -h                  show help (default: false)
./mefs-user lfs getObject --bn=test --on=1 --path=./index.html
./mefs-user lfs showStorage
Lfs has storage:  40.69 MiB
./mefs-user lfs getPros 0
bucket 0 select providers:  [8 21]

Start Usage

Hardware Recommendation

If you want to be the Provider, you can set a detailed basic configuration information.

Do you want to earn income from unused storage space and bandwidth?

If you have spare storage space and bandwidth and want to make some profit from it, you can participate in Memo as a provider.

Recommended configuration:

  • 8 cores, 16G memory, 2TB storage, 20Mbps bandwidth;

  • External network IP, port 4001 is usable;

  • Docker environment;

  • Linux System

How to use

Start provider in docker

Gateway Mode

Multiple users can share one mefs's running program.

User Agent Start

After mefs is started, other users can also be started as a proxy.

Parameter explanation:

After mefs is started, other users can also be shut down by proxy.

Parameter explanation:

  • Cli

  • Http

The user whose address is the public key obtains the file named ObjectName from the BucketName bucket.

  • Cli

  • Http

mefs-user lfs start <addr> --sk=<private key> --pwd=<password>
addr:account address;

--sk:the private key of the user; if the private key corresponding to the address does not match, the address of the private key shall prevail;

--pwd:user's password;
User Agent Stop
Usage
Example
mefs-user lfs kill <addr> --pwd=<password>
addr:account address

--pwd:account password
mefs-user rootcmd subcmd arg1 op1=arg2 --addr=<public key>
curl "http://<ip>:5001/api/v0/<roocmd>/<subcmd>?arg=<arg1>&op1=<arg2>&addr=<public key
mefs_user lfs get_object <BucketName> <ObjectName> --addr=<public key>
curl  "http://127.0.0.1:5001/api/v0/lfs/get_object?arg=<BucketName>&arg=<ObjectName>&addr=<public key>"

How to start

Step 1: Environment Deployment

View Docker Installation section to install docker.

Step 2: Set up the node directory

Node home directory:

Using "~/memo_provider" as an example:

Node data storage directory: ~/memo_user_data as an example.

The node home directory is the provider directory and the node storage directory is the provider node data storage directory.

Step 3: Pull image(provider)

Step 4: Initialization(Create new wallet)

Explanation of parameters:

--password: Enter your provider node password, the default is memoriae.

Init: Execute the initialize command, which will generate your wallet address and generate a configuration file.

Step 5: Get wallet address

Explanation of parameters:

wallet default: Get the default wallet address

Step 6: Top up

Starting node needs both the Memo and cMemo token.

To get the cMemo token, there is one faucet,

This is the MemoChain information.

Memochain information

Chain RPC:

Currency name: CMEMO

Chain ID: 985

Chain browser:

To get Memo Tokens for your wallet, you can transfer some Memo Tokens from other wallet address which has enough Memo Tokens. The provider needs minimum 30 Memo Tokens.

Join our discussing with Slack Link:

Step 7: Modify the configuration file

Step 8:Start node

  • Please make sure your user home directory and password are the same as in the previous step.

If there is any deploy issue. Please join the deploy-node discussing with Slack Link:

Checking the running status

Step 1: Enter the container

Step 2: Check provider information

Step 3: Declare

• When participating as a provider node, you need to execute the declare command (declare the public network address) for communication between nodes;

• Get your public network ip+port ready, I will show you below;

• Note: Execute the command in the container;

• The command mefs-provider info can only be executed after the sync information displays as true. Although the synchronization can be successful without doing so, it will not be able to communicate with other nodes.

Parameter explanation

X.X.X.X is your public ip address.

Port 4007 is your public network port, and the mapped port is the host's port 4001 (-p 4001: the first port 4001 of the boot parameter).

Check net status

Get local node network information

Command description: Enter command net info to view the network id (cid), ip address and port of the current node.

Get the network connection information of the node

Command description: Enter command net peers to view the network connection information of the current node.

Connect to any node

Command description: Enter command net connect to connect to any node; if there is any problem with your node network, please enter command net connect to connect to our public node.

COMMON MISTAKES

  1. ERROR: not have tx fee on chain

Solution: Check the node, both of the cMemo token balance, and the memo balance. The Memo token balance must meet the minimum amount for node startup.

  1. ERROR: execution reversed: can't unpledge during 180d

The node pledge amount needs to be withdrawn 180 days after the last pledge.

  1. If the log reports that the meta and state files are missing, you can perform the Recover operation.

mefs-provider recover db --path /home/mcloud/provider2/.memo-provider/meta

mefs-provider recover db --path /home/mcloud/provider2/.memo-provider/state

https://faucet.metamemo.one/
https://chain.metamemo.one:8501/
https://scan.metamemo.one:8080/
https://join.slack.com/t/memo-nru9073/shared_invite/zt-sruhyryo-suc689Nza3z8boa4JkaLqw
https://join.slack.com/t/memo-nru9073/shared_invite/zt-sruhyryo-suc689Nza3z8boa4JkaLqw
export MEFS_PATH=~/memo_provider
export MEFS_DATA=~/memo_provider_data
docker pull memoio/mefs-provider:latest
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest init --password=memoriae
ddocker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest wallet default
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest config set --key=contract.version --value=3
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest config set --key=contract.endPoint --value="https://chain.metamemo.one:8501"
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest config set --key=contract.roleContract --value="0xbd16029A7126C91ED42E9157dc7BADD2B3a81189"
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest bootstrap clear
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-provider memoio/mefs-provider:latest bootstrap add "/ip4/183.240.197.189/tcp/14006/p2p/12D3KooWAMpZPwfJopVnp99oqp4zhbjE1G3LFAkcjfBuiyzyCmv7"
docker run -d -p 4001:4001 -v $MEFS_PATH:/root -v $MEFS_DATA:/root/data -e PASSWORD="memoriae" -e PRICE=250000 -e GROUP=3 -e SWARM_PORT=4001 -e DATA_PATH=/root/data --name mefs-provider memoio/mefs-provider:latest
docker exec -it mefs-provider bash
mefs-provider info -a
----------- Version Information -----------
2023-05-16 09:35:49 UTC
2.7.0+api.2+git.c405cb1+2023-03-15.16:15:54CST
----------- Network Information -----------
Network ID:  12D3KooWSLvBa9QB5Qy9SPnrhuNJhCAPzVmyri9gacaUAgfpQ72q
IP:  [/ip4/172.xx.xx.xx/tcp/4001]
Type: Private
Declared Address:  {12D3KooWSLvBa9QB5Qy9SPnrhuNJhCAPzVmyri9gacaUAgfpQ72q: [/ip4/103.xx.xx.xx/tcp/24001]}
----------- Sync Information -----------
Status: true, Slot: 1530431, Time: 2023-05-16 09:35:30 UTC
Height Synced: 346322, Remote: 346322
Challenge Epoch: 81 2023-05-10 03:31:30 UTC
----------- Role and Account Information -----------
Role ID:  421
Type:  Provider
Location: Personal
Wallet:  0xDd8F2bE3C11b1b1A74404141BA8216a5010B1746
Owner:  0xDd8F2bE3C11b1b1A74404141BA8216a5010B1746

Memo Balance: 1.00 Memo
cMemo Balance: 999.90 Gwei
Storage Balance: 0 AttoMemo, Income: 0 AttoMemo
Current Pledge: 30.00 Memo, Reward: 4.05 Memo
Pledge Time: 2023-05-16 02:08:04 UTC
Historical Pledge: 30.00 Memo, Reward: 4.05 Memo
Withdraw Pledge: 0 AttoMemo, Reward: 0 AttoMemo
Pool Pledge: 416.00 Memo, Reward: 7481.01 Memo

Storage Size: 0 byte (0 B), Price: 0 (AttoMemo/Second)
Storage Deposit: 0 AttoMemo
----------- Group Information -----------
EndPoint:  https://chain.metamemo.one:8501
Contract Address:  0xbd16029A7126C91ED42E9157dc7BADD2B3a81189
Group ID:  3
Security Level:  3
Size:  2.00 GiB
Price: 2114500000 (AttoMemo/Second)
Keepers: 4, Providers: 4
----------- Store Information ----------
Service Ready:  true
Received Size:  0 B
Confirmed Size: 0 B
OnChain Size:  0 B
----------- Local Information -----------
Meta Usage: path /root/.memo-provider, used 781.37 MiB, free 277.71 GiB
Data Usage: path /root/data, used 0 B, free 277.71 GiB	
mefs-provider net declare /ip4/X.X.X.X/tcp/4007
mefs-provider net info
Network ID 12D3KooWBpPPzk9srHVVU4kkVF1RPJi9nYNgV4e6Yjjd4PGr5qrk, IP [/ip4/10.2.2.61/tcp/18003], Type: Private
mefs-provider net peers
12D3KooWMrZTqoU8febMxxxxxxxxxCeqLQy1XCU9QcjP1YWAXVi [/ip4/10.2.2.66/tcp/8003]
12D3KooWC2PmhSrU1VexxxxxxxxxtwvQuFZj3vPfjdfebAuJQtc [/ip4/10.2.2.66/tcp/8004]
12D3KooWR74K1v6naGxxxxxxxxxVS88h4X93bMnquoRiEDdLJTx [/ip4/10.2.2.61/tcp/8003]
12D3KooWSzzwJ7es1xxxxxxxxxPaqei3TUHnNZDmWTELSA7NJXQ [/ip4/10.2.2.62/tcp/18003]
12D3KooWG8PjbbN9xxxxxxxxx2oYFtjeQ8XnqvnEqfrB4AiW7eJ [/ip4/10.2.2.65/tcp/8003]
12D3KooWRjamwQtxxxxxxxxxb44AAXLNy9CB7u1FL2eC5QZekpF [/ip4/1.182.0.0/tcp/24071]
...
mefs-provider net connect /ip4/10.2.x.x/tcp/8004/p2p/12D3KooWAykMmqu951ziotQiAYTN6SwfvBd1dsejSSak2jdSwryF

For Windows

Before starting the memo, you must install docker.

Windows install Docker:

1、Docker official website

2、Download docker for windows

Wait for the download to complete.

Double click to install.

Wait, finish.

After the installation is complete, you will be prompted to restart the computer

Double-click the icon to start docker

Install WSL 2 (a program necessary for installing docker on windows)

How to start

Step by step

Step 1: Environment Deployment

View Docker Installation section to install docker.

Start user in windows

Step 1 Download Installer

Download url:

Step 2: Set up the node directory

Node home directory: ~/memo_user as an example:

Node data storage directory: ~/memo_user_data as an example.

The node home directory is the user directory and the node storage directory is the user node data storage directory.

Step 3: Pull image(User)

Step 4: Initialization(Create new wallet)

Explanation of parameters:

--password: Enter your user node password, the default is memoriae.

init: Execute the initialization command, which will generate your wallet address and generate a configuration file.

Step 5: Get wallet address

Explanation of parameters:

wallet default: Get the default wallet address

Step 6: Top up

Starting node needs both the Memo and cMemo token.

To get the cMemo token, there is one faucet, https://faucet.metamemo.one/

This is the MemoChain information.

Memochain information

Chain RPC: https://chain.metamemo.one:8501/

Currency name: CMEMO

Chain ID: 985

Chain browser: https://scan.metamemo.one:8080/

To get Memo Tokens for your wallet, you can transfer some Memo Tokens from other wallet address which has enough Memo Tokens. The user needs minimum 1 Memo Tokens.

Join our discussing with Slack Link:

https://join.slack.com/t/memo-nru9073/shared_invite/zt-sruhyryo-suc689Nza3z8boa4JkaLqw

Step 7: Modify the configuration file

Step 8:Start node

  • Default in web, account: admin; password: memoriae.

  • Please make sure your user home directory and password are the same as in the previous step.

If you have any technical problems, please join our Discord server for help. https://discord.gg/YXQQwPhMpq

Check running status

Step 1: Enter the container

Step 2: Check user information

Check net status

Get local node network information

Command description: Enter command net info to view the network id (cid), ip address and port of the current node.

Get the network connection information of the node

Command description: Enter command net peers to view the network connection information of the current node.

Connect to any node

Command description: Enter command net connect to connect to any node; if there is any problem with your node network, please enter command net connect to connect to our public node.

Restart after poweroff

If the account has been started, and then the computer has been shutted down, Docker, or "Windows PowerShell" was been closed, if you need to restart MEMO again, you need to open Docker first, then run the command line " docker start mefs-user" to start.

export MEFS_PATH=~/memo_user
export MEFS_DATA=~/memo_user_data
docker pull memoio/mefs-user:latest
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest init --password=memoriae
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest wallet default
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest config set --key=contract.version --value=3
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest config set --key=contract.endPoint --value="https://chain.metamemo.one:8501"
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest config set --key=contract.roleContract --value="0xbd16029A7126C91ED42E9157dc7BADD2B3a81189"
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest bootstrap clear
docker run --rm -v $MEFS_PATH:/root --entrypoint mefs-user memoio/mefs-user:latest bootstrap add "/ip4/183.240.197.189/tcp/14006/p2p/12D3KooWAMpZPwfJopVnp99oqp4zhbjE1G3LFAkcjfBuiyzyCmv7"
docker run -d -v $MEFS_PATH:/root -v $MEFS_DATA:/root/data -e PASSWORD="memoriae" -e PRICE=250000 -e MEFS_PATH=/root/.memo-user -e GROUP=3 -e SWARM_PORT=4001 -e DATA_PATH=/root/data --name mefs-user -e GATEWAY=true -e GATEWAY_USERNAME=admin -e GATEWAY_PASSWORD=memoriae -p 8080:8080 memoio/mefs-user:latest
docker exec -it mefs-user bash
mefs-user info
----------- Information -----------        
2022-03-23 10:42:36 CST		#Current time
2.1.0-alpha+git.e759ff0+2022-03-22.15:51:16CST		#mefs-user version information
----------- Network Information -----------		#network information
ID:  12D3KooWBpPPzk9srHVVU4kkVF1RPJi9nYNgV4e6Yjjd4PGr5qrk   #network id
IP:  [/ip4/10.2.2.61/tcp/18003]  #Current node network information, 18003 is the swarm-port port, used for node communication
Type: Private
----------- Sync Information -----------		
Status: true, Slot: 322885, Time: 2022-03-23 10:42:30 CST	#Please check if your sync status is true, if it is false, please check your node network
Height Synced: 2640, Remote: 2640		#sync status
Challenge Epoch: 21 2022-03-23 09:55:30 CST		 
----------- Role Information -----------		
ID:  29		
Type:  User		
Wallet:  0xD2EC305EA80C6FCEF315029A806f52F27f3fB29a		#Wallet address
Balance: 998.25 Gwei (tx fee), 998815392.06 NanoMemo (Erc20), 148075.99 NanoMemo (in fs)		#balance
Data Stored: size 115294208 byte (109.95 MiB), price 113500000
----------- Group Information -----------		
EndPoint:  http://119.147.213.220:8191		
Contract Address:  0xCa2C4103bd5679F43eC9E277C2bAf5598f94Fe6D		 
Fs Address:  0xFB9FF16EB4093aa8fFf762F2dF4E61d3A7532Af9		
ID:  1		#group id
Security Level:  7
Size:  109.95 MiB		 
Price:  113500000		
Keepers: 10, Providers: 16, Users: 4		#The number of nodes in the current group
----------- Pledge Information ----------		
Pledge: 0 AttoMemo, 26.00 Memo (total pledge), 26.00 Memo (total in pool)		#current pledge information			
----------- Lfs Information ----------		
Status: writable
Buckets:  1
Used: 1.82 GiB
Raw Size: 109.95 MiB
Confirmed Size: 109.95 MiB
OnChain Size: 109.95 MiB
Need Pay: 987173.29 NanoMemo
Paid: 987173.29 NanoMemo
mefs-user net info
Network ID 12D3KooWBpPPzk9srHVVU4kkVF1RPJi9nYNgV4e6Yjjd4PGr5qrk, IP [/ip4/10.2.2.61/tcp/18003], Type: Private
mefs-user net peers
12D3KooWMrZTqoU8febMxxxxxxxxxCeqLQy1XCU9QcjP1YWAXVi [/ip4/10.2.2.66/tcp/8003]
12D3KooWC2PmhSrU1VexxxxxxxxxtwvQuFZj3vPfjdfebAuJQtc [/ip4/10.2.2.66/tcp/8004]
12D3KooWR74K1v6naGxxxxxxxxxVS88h4X93bMnquoRiEDdLJTx [/ip4/10.2.2.61/tcp/8003]
12D3KooWSzzwJ7es1xxxxxxxxxPaqei3TUHnNZDmWTELSA7NJXQ [/ip4/10.2.2.62/tcp/18003]
12D3KooWG8PjbbN9xxxxxxxxx2oYFtjeQ8XnqvnEqfrB4AiW7eJ [/ip4/10.2.2.65/tcp/8003]
12D3KooWRjamwQtxxxxxxxxxb44AAXLNy9CB7u1FL2eC5QZekpF [/ip4/1.182.0.0/tcp/24071]
...
mefs-user net connect /ip4/10.2.x.x/tcp/8004/p2p/12D3KooWAykMmqu951ziotQiAYTN6SwfvBd1dsejSSak2jdSwryF
docker start mefs-user
Step 2 Unzip Package

Unzip mefs-user-install.zip

Step 3 Install

Enter "mefs-user-install" file folder, double click install.exe for regestering user.

Step 4 Check Account Address

After successfully registered user, you can see the content of installation directory as follows:

Open “account.txt.” It will contain your wallet address and created password as shown below.

Contact the Memolabs team to recharge your wallet with some tokens before proceeding to the next stage.

Step 5 Top Up

Starting node needs both the Memo and cMemo token.

To get the cMemo token, there is one faucet, https://faucet.metamemo.one/

This is the MemoChain information.

Memochain information

Chain RPC: https://chain.metamemo.one:8501/

Currency name: CMEMO

Chain ID: 985

Chain browser: https://scan.metamemo.one:8080/

To get Memo Tokens for your wallet, you can transfer some Memo Tokens from other wallet address which has enough Memo Tokens. The user needs minimum 1 Memo Tokens.

Join our discussing with Slack Link:

https://join.slack.com/t/memo-nru9073/shared_invite/zt-sruhyryo-suc689Nza3z8boa4JkaLqw

If you want to check the account balance,Please refer to this link

How to checking the account balance

Step 6

When your installation completed, the content of installation folder is as follows:

Mmeanwhile there are 2 more icons appeared on your desktop.

Run 'memo_start' icon on desktop to start user.

The running window will show that user node is starting, and data is being synchronized. This will take about 5 hours to complete, please be patient.

Step 7 Check Running Status

Now you can see two "mefs-user.exe" in the task manager shows the user node and gateway is running.

Step 8 Using User with Webui

Open URL http://127.0.0.1:9090 in your web browser to use user WebUI

Open the account.txt in the memouser folder to view your login imformation

Create bucket

Caution: If this is the first run of your User node, you need to wait about 10~20 minutes for node to complete synchronization. If sync is not complete yet, you will get a "lfs service is read only" error.

After that you can begin create bucket.

Upload file

Caution: When a new bucket is created, it needs about 2 minutes to be confirmed. So wait a moment before you start to upload files into a new bucket.

Download file

Stop User

You can stop user node with following 2 methods. But this just closes node service, the gateway service is not closed, you have to manually close it in the task manager for now.

https://github.com/memoio/go-mefs-release/releases/
WSL 2 download

HTTP Operation

Mefs commands can all be operated using HTTP.

Configuration

Before mefs-user starts, confirm the following configuration is set in the config.json:

// mefs api port setting, default is 5001

api.address is set to: /ip4/0.0.0.0/tcp/5001

// cross-domain access

api.accessControlAllowOrigin is set to: ["*"]

api.accessControlAllowMethods is set to: ["PUT","GET", "POST"]

Then restart mefs-user to use HTTP to operate.

Usage

A command similar to the following:

mefs-user rootcmd subcmd <arg1> <arg2> -opname1=<op1> -opname2=<op2>

The corresponding HTTP request is:

IP is the network address of the machine where mefs-user is started. The port defaults to 5001. If cross-domain access is configured before running, you can use the external network IP to access, otherwise you can only access it through 127.0.0.1.

The output is in standard JSON format:

The output is in standard JSON format:

curl "http://<ip>:<port>/api/v0/<rootcmd>/<subcmd>?arg=<arg1>&arg=<arg2>&opname1=<op1>&opname2=<op2>"
curl "http://127.0.0.1:5001/api/v0/lfs/list_buckets?addr=<public key>"
Example
Show all bucket information
Display Information about All Objects in a Bucket
  {
    "Method": "List Buckets",
    "Buckets": [
      {
        "BucketName": "<BucketName>",
        "BucketID": "<BucketID>",
        "Ctime": "<Ctime>",
        "Policy": "<Policy>",
        "DataCount": "<DataCount>",
        "ParityCount": "<ParityCount>"
      },
      {
        "BucketName": "<BucketName>",
        "BucketID": "<BucketID>",
        "Ctime": "<Ctime>",
        "Policy": "<Policy>",
        "DataCount": "<DataCount>",
        "ParityCount": "<ParityCount>"
      }
    ]
  }
curl "http://127.0.0.1:5001/api/v0/lfs/list_objects?arg=<BucketName>&addr=<public key>"
{
  "Method": "List Objects",
  "Objects": [
    {
      "ObjectName": "<ObjectName>",
      "ObjectSize": "<ObjectSize>",
      "Ctime": "<Ctime>",
      "Dir": "<Dir>",
      "LatestChalTime": "<LatestChalTime>"
    },
    {
      "ObjectName": "<ObjectName>",
      "ObjectSize": "<ObjectSize>",
      "Ctime": "<Ctime>",
      "Dir": "<Dir>",
      "LatestChalTime": "<LatestChalTime>"
    }
  ]
}

For Linux

Before starting the memo, you must install docker.

Docker: Install on Linux

How to install Docker in Linux(Ubuntu):

1、Update apt package index

2、Install the following packages to enable apt to use the repository over HTTPS

3、Add the GPG key of Docker official

4、Run the following command line to set up the stable repository

5、 Update the apt package index again

6、 Install the latest version of Docker CE

7、 Verify whether the installation is successful

Check the version of docker installed

Start docker and pull hello-world to verify whether the installation is successful

Since sudo access is required to use docker, enter the password here and it will be started successfully.

Next, run the following command line

You can see the container being downloaded from the remote for testing: Pulling from library/hello-world

When you see the message: Hello from Docker! It means the docker is successfully installed.

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce
docker -v
sudo service docker start
sudo docker run hello-world

Docker Installation