Mainnet telemetry | Web wallet | Mobile wallet | Block Explorer | Block Explorer API | Discord chat | Telegram chat
Guidelines:
- Requirements
- How easily to start mining with Docker (Windows; Linux; Mac OS; any system)
- How to start mining on Linux or Mac OS
- How to to start mining on Windows
- How to use the web wallet
- Troubleshooting
- How to unlock funds mined
- How to set up a Validator
- On-chain identity
- API and Node interaction
- Addresses and keys
Requirements
The most common way for a beginner to run a miner and validator is to leverage a cloud server running Linux. You may choose whatever VPS provider that your prefer, and whatever operating system you are comfortable with. The transactions weights in PoScan were benchmarked on standard hardware. It is recommended that miners and validators run at least the standard hardware in order to ensure they are able to process all blocks in time. The following are not minimum requirements but if you decide to run with less than this beware that you might have performance issue.
Standard Hardware
- CPU - Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz
- Storage - A NVMe solid state drive. Should be reasonably sized to deal with blockchain growth. Starting around 80GB - 160GB will be okay for the first six months of Realis, but will need to be re-evaluated every six months.
- Memory - 64GB.
The specs posted above are by no means the minimum specs that you could use when running a validator, however you should be aware that if you are using less you may need to toggle some extra optimizations in order to be equal to other validators that are running the standard.
How to start mining with Docker (Windows; Linux; Mac OS; any system)
This way you can run both Node and Miner in one command. Windows, Linux, Mac OS are supported.
- First, install Docker and Docker Compose.
- Open Terminal and clone 3DPass Node. Use this command:
git clone https://github.com/3Dpass/3DP
- Create your mining address via Web wallet. Use these guidelines if you need help. Keep your seed phrase in a safe place. There is no way to recover if it's lost.
- Run both Node and Miner with the following command:
cp docker-compose.override.yml.example docker-compose.override.yml // TODO: put your `MEMO_SEED` and `ADDRESS` in `docker-compose.override.yml` docker compose build docker compose up
- Put your `MEMO_SEED` phrase and miner's `ADDRESS` into
`~/3DP/docker-compose.override.yml`
like this:version: "3.9" services: node: environment: - MEMO_SEED=[PLACE MEMO SEED HERE] - ADDRESS=[PLACE MINER ADDRESS HERE] - THREADS=2 - INTERVAL=6
- THREADS=2
is the amount of threads you are about to use
- INTERVAL=6
is the amount of time in miliseconds between the last and the next one objects being sent towards the Node. Dependidng on how much threads are you mining with, reduce the interval until you reach desired proc load. - Run the Node again and make sure you can see it in the list.
In order to assign a custom name to your Node you need to modify node.sh
file located ~/3DP/docker/node.sh
.
All you have to do is to add the flag --name YourNodeName \
like this:
./p3d import-mining-key "$MEMO_SEED" --base-path /var/chain --chain mainnetSpecRaw.json ./p3d --unsafe-ws-external --unsafe-rpc-external --rpc-cors=all \ --chain mainnetSpecRaw.json --validator \ --base-path /var/chain \ --name YourNodeName \ --author "$ADDRESS"
In order to remove your blockchain DB and keystore use this command:
cd 3DP docker compose rm -f
How to start mining on Linux or MAC OS
- Open your Terminal and build the Node with the folowing:
cd ~
git clone https://github.com/3Dpass/3DP.git
cd 3DP
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly
source $HOME/.cargo/env
rustup update nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
sudo apt-get install -y libclang-dev libssl-dev clang
cargo build --release
- Option (for Linux only): You can download the latest release instead of building yourself:
wget https://github.com/3Dpass/3DP/releases/download/v0.1.0/poscan-consensus-x86_64-unknown-linux-gnu.tar.gz
tar xzf poscan-consensus-x86_64-unknown-linux-gnu.tar.gz
- Generate your mining key:
./target/release/poscan-consensus generate-mining-key --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json
The output would be like this:
Public key: 0xccc201f5b3e7036c5ea534096d75befbda68a9b285025csd7105bc4726f02f7e
Secret seed: fog olympic thrive recall allow page hood damage october curtain degrwe bubble
Address: d1GtBxnPwRZVez7VsQ9H7MskPn34H59RddrR9yXqhgDYsqC3t
-
Register your mining key in the keystore:
./target/release/poscan-consensus import-mining-key 'your secret seed phrase' --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json
-
Generate the key for GRANDPA:
./target/release/poscan-consensus key inspect --scheme Ed25519 "your secret seed phrase"
The seed phrase must be the same as for your mining key.
The output would be like this:
Secret phrase `fog olympic thrive recall allow page hood damage october curtain degrwe bubble` is account:
Network ID/Version: 71
Secret seed: 0x4934fa3a959af00a0caccf2be77d82f4cbf2154c3c7bebc021f2c1573f44fbb3
Public key (hex): 0x23dad301fa6165b70bf538ca3be304ad418232c76814b38223c57d69bf2b28d1
Account ID: 0x23dad301fa6165b70bf538ca3be304ad418232c76814b38223c57d69bf2b28d1
SS58 Address: d1HqrBYq9qsTbBb4tQtnt9sLgh9UsS7XJbgQgr5Cb4CxH2xAd
-
Insert Grandpa key into the keystore:
./target/release/poscan-consensus key insert --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json --scheme Ed25519 --suri 0x4934fa3a959af00a0caccf2be77d82f4cbf2154c3c7bebc021f2c1573f44fbb3 --key-type gran
--suri
is your Secret seed for Grandpa (not a Secret phrase, but this one 0x4934fa3a959af00a0caccf2be77d82f4cbf2154c3c7bebc021f2c1573f44fbb3
in the example above)
-
Check if there are 2 keys in the keystore:
ls ~/3dp-chain/chains/3dpass/keystore
You can also check the keys manualy ~/3dp-chain/chains/3dpass/keystore
-
Restart the Node with the following:
./target/release/poscan-consensus --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json --name MyNodeName --validator --telemetry-url "wss://submit.telemetry.3dpass.org/submit 0" --author 0xccc201f5b3e7036c5ea534096d75befbda68a9b285025csd7105bc4726f02f7e --threads 2 --no-mdns
--author
is your Public key from mining account (the one you have generated as mining key, in the example above it is 0xccc201f5b3e7036c5ea534096d75befbda68a9b285025csd7105bc4726f02f7e
)
--threads
is the number of threads you're about to use for mining ("--threads 2" means, you are going to leverage 2 threads)
- Install Nodejs v16 and pnpm
- Install miner:
corepack enable
pnpm i
- Run miner:
pnpm miner --interval 6 --threads 32
--interval
is the amount of time in miliseconds between the last and the next one objects being sent towards the Node.
Dependidng on how much threads are you mining with, reduce the interval until you reach desired proc load.
- Make sure you have open External port
30333
for incoming connections and forwarded to your server's local LAN IP
- Make sure you can see your Node in the list
cd ~ git clone https://github.com/3Dpass/3DP.git cd 3DP curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly source $HOME/.cargo/env rustup update nightly rustup target add wasm32-unknown-unknown --toolchain nightly sudo apt-get install -y libclang-dev libssl-dev clang cargo build --release
wget https://github.com/3Dpass/3DP/releases/download/v0.1.0/poscan-consensus-x86_64-unknown-linux-gnu.tar.gz tar xzf poscan-consensus-x86_64-unknown-linux-gnu.tar.gz
./target/release/poscan-consensus generate-mining-key --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json
The output would be like this:
Public key: 0xccc201f5b3e7036c5ea534096d75befbda68a9b285025csd7105bc4726f02f7e Secret seed: fog olympic thrive recall allow page hood damage october curtain degrwe bubble Address: d1GtBxnPwRZVez7VsQ9H7MskPn34H59RddrR9yXqhgDYsqC3t
./target/release/poscan-consensus import-mining-key 'your secret seed phrase' --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json
./target/release/poscan-consensus key inspect --scheme Ed25519 "your secret seed phrase"The seed phrase must be the same as for your mining key.
The output would be like this:
Secret phrase `fog olympic thrive recall allow page hood damage october curtain degrwe bubble` is account: Network ID/Version: 71 Secret seed: 0x4934fa3a959af00a0caccf2be77d82f4cbf2154c3c7bebc021f2c1573f44fbb3 Public key (hex): 0x23dad301fa6165b70bf538ca3be304ad418232c76814b38223c57d69bf2b28d1 Account ID: 0x23dad301fa6165b70bf538ca3be304ad418232c76814b38223c57d69bf2b28d1 SS58 Address: d1HqrBYq9qsTbBb4tQtnt9sLgh9UsS7XJbgQgr5Cb4CxH2xAd
./target/release/poscan-consensus key insert --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json --scheme Ed25519 --suri 0x4934fa3a959af00a0caccf2be77d82f4cbf2154c3c7bebc021f2c1573f44fbb3 --key-type gran
--suri
is your Secret seed for Grandpa (not a Secret phrase, but this one 0x4934fa3a959af00a0caccf2be77d82f4cbf2154c3c7bebc021f2c1573f44fbb3
in the example above)
ls ~/3dp-chain/chains/3dpass/keystoreYou can also check the keys manualy
~/3dp-chain/chains/3dpass/keystore
./target/release/poscan-consensus --base-path ~/3dp-chain/ --chain mainnetSpecRaw.json --name MyNodeName --validator --telemetry-url "wss://submit.telemetry.3dpass.org/submit 0" --author 0xccc201f5b3e7036c5ea534096d75befbda68a9b285025csd7105bc4726f02f7e --threads 2 --no-mdns
--author
is your Public key from mining account (the one you have generated as mining key, in the example above it is 0xccc201f5b3e7036c5ea534096d75befbda68a9b285025csd7105bc4726f02f7e
) --threads
is the number of threads you're about to use for mining ("--threads 2" means, you are going to leverage 2 threads)
corepack enable pnpm i
pnpm miner --interval 6 --threads 32
--interval
is the amount of time in miliseconds between the last and the next one objects being sent towards the Node.
Dependidng on how much threads are you mining with, reduce the interval until you reach desired proc load.
30333
for incoming connections and forwarded to your server's local LAN IPThere is an alternatinve miner you can also use with your node.
In order ot remove your blockchain DB use this command:
rm -rf ~/3dp-chain/chains/3dpass/db
How to start mining on Windows
- Download and install Rust
- Install Git if you havent installed it yet
- Install Node.js. Make sure you have picked up "Chocolatey installation", which is required for the node to work correctly
- Open powershell as administrator and go to the Desktop (we use this as an example). You can choose any location you like:
cd C:\Users\YourUserNameHere\Desktop\
- Install llvm with choco
choco install llvm
- Configure Rust with the following:
rustup install nightly-2022-06-17 rustup default nightly-2022-06-17 rustup toolchain install nightly-2022-06-17 rustup target add wasm32-unknown-unknown --toolchain nightly-2022-06-17-x86_64-pc-windows-msvc
-
Clone the node from the repo:
git clone https://github.com/3Dpass/3DP.git
- Build the node with the command:
cd 3DP cargo build --release
- Set up your keys for mining and Grandpa finalization and run the Node as it's shown above
- Install pnpm and then configure it up by the following:
corepack enable pnpm i
-
Run miner:
pnpm miner --interval 6 --threads 32
--interval
is the amount of time in miliseconds between the last and the next one objects being sent towards the Node. Dependidng on how much threads are you mining with, reduce the interval until you reach desired proc load.
How to use 3DPass web wallet
3DPass browser wallet is a Java Script page interacting with the blockchain network directly from your browser. Once being downloaded it might be connected either to the remote API endpoint available or to the local node running on your computer. By means of changing endpoints you can easily switch among different networks. Go to Settings to switch the endpoint:

API endpoints:
- wss://rpc.3dpass.org - mainnet
- wss://rpc2.3dpass.org - mainnet
- ws://127.0.0.1:9944 - local Node

How to create new address:
- Open 3DPass wallet page in your web browser.
- Make sure that you are connected to the correct endpoint: wss://rpc.3dpass.org or wss://rpc2.3dpass.org as it's shown above. Use "+" to generate new address. Keep your seed phrase in a safe place. There is no any possible ways to recover if it's lost. You can also import your address from the seed phrase.

Remove your address after it's being used:
We recommend that you not to store your addresses in browser constantly. Store your seed phrase in a safe place. You can import the address again whenever you need.
Troubleshooting
Node has no peers connected

That 99% might be caused by your Iternet connection or Internet settings.
- Check your Internet connection
- Make sure incoming connections are allowed, external port 30333 is open. Check your router, firewall, ddos protection, etc. For some countries you might need to use VPN.
- Ckeck if port 30334 is open on your computer/server
- Check your Internet speed. It should be at least 1 Mb/s for download
Node got stuck at the certain heght or it won't start syncing
It looks like you have some peers connected, however the Node got stuck indicating sync velocity 0 blocks per second and not receiving any blocks.

Solution:
- Make sure incoming connections are allowed and external port 30333 is open for your node.
- If you are behind the NAT or router, it's recomended that you set up a static internal IP and forward external port 30333 to your machine
- Sometimes, it might get tricky to establish the first p2p connection between nodes behind NAT. Try leveraging some different Internet provider or direct connection from data center, etc. That might really help. If you have your computer connected via router, then turn it off for 10-15 min and then try again.
Node is always falliing behind the other nodes and wouldn't catch up with the chain
That kind of issue might be caused by either you have some troubles with the Internet connection or your hardware doesn't satisfy or lower than the standatd conditions reqired.
- It's recommended that you upgrade the hardware and the Internet connection speed.
- You can also download the actual blockchain db and start syncing from that point. Ask the db on Discord chat and replace your folder
~/3dp-chain/chains/3dpass/db
with the new one.
Error: Service(Other("Unable to mine: fetch pair from author failed"))
- Set up your keys for mining and for Grandpa as it's described in the guidelines. If you are running the Node manually, make sure if there are two keys in the keystore:
~/3dp-chain/chains/3dp/keystore
"Expected prunning mode: constrained"
- Remove your blockchain db as it's described above and start the node again.
Cannot unlock my old mining rewards
The chain state on the blockchain storage for the Rewards pallet provides there is no locks for the address you have requested, despite the fact that a certain amount of P3D is still locked in. Ex. you can see some funds locked, while observing your account over the block explorer. The chain state output would look like this:
[ [ d1EssjuwKKqe4HRFejUTtT5BXAQVnUEMw2ddKkxC1fsxvt9Sn ] {} ]
Solution:
-
Check the chain storage for the Rewards pallet to figure it out whether or not the output looks like in the example above.
- If so, proceed the following steps:
- Execute Unlock funds mined via the web wallet
- Lock 1 Cramb (0.000000000001 P3D) with the Rewards pallet like this:
- Make sure you have your funds unlocked.
How to unlock funds mined
Funds mined are getting unlocked partially by 10% each 10 days. In order to unlock funds available sign unlock transaction:
- Open the web wallet
- Choose "Unlock funds mined"
- If you still have some issues, despite the fact that the lock period has expired, check this case for troubleshooting
Addresses and keys
Master account in 3DPass is defined by a mnemonic seed phrase which can be utilized for the construction of various types of keys. Whatever the key type was used,
there is always a possibility to validate the standard account by its public key. Standard account ID is a public key in hex format like this 0x23dad301fa6165b70bf538ca3be304ad418232c76814b38223c57d69bf2b28d1
.
For example, you have got your Master account defined by the mnemonic seed phrase like this one debris minor crater swear crane whale clever into now tone grid proud
), and at least two different types of keys can be generated from out out of, such as:
sr25519
(Schnorrkel) - standard accounts designed to control funds withed25519
(Edwards) - used for GRANDPA finalization
Generating keys
Use key generate
command to generate a random regular account and the key pair:
./target/release/poscan-consensus key generate --scheme Sr25519
The output would be like this:
Secret phrase: debris minor crater swear crane whale clever into now tone grid proud Network ID: 71 Secret seed: 0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a Public key (hex): 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Account ID: 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Public key (SS58): d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek SS58 Address: d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek
Inspecting addresses and keys
Use key inspect
command to display the the account details. Seed phrase, private key (hex), address or public key (hex) can be inspected.
Inspecting public key by the network address
./target/release/poscan-consensus key inspect d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEekThe output would be like this if given address is valid:
Public Key URI `d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek` is account: Network ID/Version: 71 Public key (hex): 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Account ID: 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Public key (SS58): d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek SS58 Address: d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek
Invalid address format would cause the error:
Invalid phrase/URI given
Inspecting a network address by its public key
In this case --public
flag has to be used
./target/release/poscan-consensus key inspect --public 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10
This output is expected:
Network ID/Version: 71 Public key (hex): 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Account ID: 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Public key (SS58): d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek SS58 Address: d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek
Inspecting a seed phrase
By means of inspecting a seed phrase you can derive both types of keys sr25519
and ed25519
from out of it. Ex. in order to create a ed25519
type of key pair, this command is required:
./target/release/poscan-consensus key inspect --scheme Ed25519 "debris minor crater swear crane whale clever into now tone grid proud"
The output would as follows:
Secret phrase: debris minor crater swear crane whale clever into now tone grid proud Network ID: 71 Secret seed: 0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a Public key (hex): 0x6bfcaf1780f0c9f11ee93366c7cf0f24b0a77675966589c82398236da32024d3 Account ID: 0x6bfcaf1780f0c9f11ee93366c7cf0f24b0a77675966589c82398236da32024d3 Public key (SS58): d1EhJkMSTJQDgnkyet8kaB4QppPzYBX1XJWETKF8C2fv1ruxS SS58 Address: d1EhJkMSTJQDgnkyet8kaB4QppPzYBX1XJWETKF8C2fv1ruxS
Inspecting a private key
while inspectin a private key(hex) the sr25519
is set up by default. For example, let's inspect the private key from the account above, which was generated with ed25519
./target/release/poscan-consensus key inspect 0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a
The output will be like this:
Secret Key URI `0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a` is account: Network ID: 71 Secret seed: 0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a Public key (hex): 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Account ID: 0x0ed64e59d2d9c1c828a41a0f3cac53d92f99bc99df795e11b804c5ebb2c96b10 Public key (SS58): d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek SS58 Address: d1CbAtpwbLAtLA6FXnDdR8FzwjqU9kKMYVWUzucaRvWzShEek
If the type ed25519
is specified, like this:
./target/release/poscan-consensus key inspect --scheme Ed25519 0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a
We are going to get the result:
Secret Key URI `0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a` is account: Network ID: 71 Secret seed: 0x3026a7ee1b5014b72287681c68e55b7eca44d11fcfb86254f1efec21845abf9a Public key (hex): 0x6bfcaf1780f0c9f11ee93366c7cf0f24b0a77675966589c82398236da32024d3 Account ID: 0x6bfcaf1780f0c9f11ee93366c7cf0f24b0a77675966589c82398236da32024d3 Public key (SS58): d1EhJkMSTJQDgnkyet8kaB4QppPzYBX1XJWETKF8C2fv1ruxS SS58 Address: d1EhJkMSTJQDgnkyet8kaB4QppPzYBX1XJWETKF8C2fv1ruxS