Join Butterfly Network

🦋 Butterfly network is intended for core implementers testing new code.

warning

This network suffers frequent resets and is not recommended for most users.

Filecoin nodes can be deployed to sync Filecoin butterfly network simply by deploying a Filecoin node manifest:

# butterfly.yaml
apiVersion: filecoin.kotal.io/v1alpha1
kind: Node
metadata:
name: butterfly-node
spec:
network: butterfly

Apply this manifest using kubectl:

$ kubectl apply -f butterfly.yaml

Kotal will create a single filecoin node that syncs butterfly Filecoin network, you can verify by getting pods in the default namepsace by:

$ kubectl get pods

you will get output similar to this

NAME READY STATUS RESTARTS AGE
pod/butterfly-node-0 1/1 Running 0 10s

Check the logs of butterfly-node by:

$ kubectl logs <butterfly-node pod name>

You will get butterfly sync logs.

Let's send an API call to butterfly-node, but first lets forward hocalhost:1234 calls to butterfly-node pod

$ kubectl port-forward <butterfly-node pod name> 1234
Forwarding from 127.0.0.1:1234 -> 1234
Forwarding from [::1]:1234 -> 1234

In another terminal window, send Filecoin.ChainHead API call

info

lotus node token can be found inside butterfly-node pod in /mnt/data/token file. Can be retrieved by

$ kubectl exec butterfly-node-0 -- cat /mnt/data/token
curl --location --request POST 'http://127.0.0.1:1234/rpc/v0' \
--header 'Authorization: Bearer <lotus node token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"jsonrpc": "2.0",
"method": "Filecoin.ChainHead",
"id": 1,
"params": []
}

You'll get a result similar to this

{
"jsonrpc": "2.0",
"result": {
"Cids": [
{
"/": "bafy2bzacearlga6bkmku2c4x57oardishkmy6nd6mjjz2xxap3eokighlcz74"
}
],
"Blocks": [
{
"Miner": "t01000",
"Ticket": {
"VRFProof": "ppZjEgJL5c5tSSuziHvzfsvxDquMhDsXEf3kYzUCMJBoJ94D6It8vpZhBz7iysKOGUJrqRw8C+AoiV0zupWDa5zIpnlkafNc1mxFpMX751w5vJHuomVIse3rJZJlGmgn"
},
"ElectionProof": {
"WinCount": 3,
"VRFProof": "mImCqI4z+Y/IhzcxeY3PXhl2DlYX3FlXhjIrzGdaymhyFdZ0xBKj+D7KmiYnjhOsCs9yZ5wuBj2FOD9MYef16NAQ6XVwoC0gnmohYEZUVYkeoY0v476uThbIFm3QdNjN"
},
"BeaconEntries": [
{
"Round": 331440,
"Data": "iL9PJq0/ow/2gL5AKShR5pdfOvWjisOkuPOXdf5DMu+wPT4ByuWNxg8+pTt8XAE8GPeJvNMJtR/LjhP1VbJVa8s3AJ19ttEqusmB/NT+KIQe602etzxBqWyK/5+p2zyp"
}
],
"WinPoStProof": [
{
"PoStProof": 2,
"ProofBytes": "mCZ3wS57/KlVCMAGmMS3lWbg5ZBOW1atI9qaOahbD6TEqs1uoUAoXq9+48WHhXMlpMr0KOA9ditjtg8XZqb/YO6NV+WAX1AhlXfzgcbu1WALMTkhdQ39i0fdAGFo5Z0yBihLkpEf+d3Lp3xT2+AUf4kM9IWTjT5eKzuI8BTWcSHbrGQN9fwA4dTyicH/OOwwjoriuwVeytRtTdVv3wF8uQouRiDqgfzrx4MEhyHETdN3fLVus/TOnhQRqkgeacbb"
}
],
"Parents": [
{
"/": "bafy2bzacebjctnak5ltmoscff5e4pdnnxx6jp4xr6uxujnt4dlsfbyvkihdxg"
}
],
"ParentWeight": "503182280",
"Height": 32010,
"ParentStateRoot": {
"/": "bafy2bzaceawp5d4oinc3xdufvjqfj3y65oercfthj7d5x5t3yyt4ose6pjxco"
},
"ParentMessageReceipts": {
"/": "bafy2bzacedswlcz5ddgqnyo3sak3jmhmkxashisnlpq6ujgyhe4mlobzpnhs6"
},
"Messages": {
"/": "bafy2bzacecmda75ovposbdateg7eyhwij65zklgyijgcjwynlklmqazpwlhba"
},
"BLSAggregate": {
"Type": 2,
"Data": "wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
"Timestamp": 1605374280,
"BlockSig": {
"Type": 2,
"Data": "kY75fEGswzFYz5Afd6/abycmiFzWvK13GQYrcRaG4iSE97Exie1/BCQdWZSqL8dBA52TGxsEsOiaB8bf6deUE4b0ES+DjjIYH2K2EBGHh8ewDfR+Hwwo6jhdR9dY1JVj"
},
"ForkSignaling": 0,
"ParentBaseFee": "100"
}
],
"Height": 32010
},
"id": 1
}

Finally you can delete the filecoin node and all its resources by

kubectl delete -f butterfly.yaml

and kubernetes garbage collector will delete all resources created by the node controller.