[{"data":1,"prerenderedAt":557},["ShallowReactive",2],{"docs-\u002Fdocs\u002Fcore-tech\u002Fbeam-ipfs-support":3,"docs-surround-\u002Fdocs\u002Fcore-tech\u002Fbeam-ipfs-support":546},{"id":4,"title":5,"body":6,"description":15,"extension":538,"image":539,"meta":540,"navTitle":539,"navigation":541,"path":542,"seo":543,"stem":544,"__hash__":545},"docs\u002Fdocs\u002Fcore-tech\u002FBEAM-IPFS-Support.md","BEAM IPFS Support",{"type":7,"value":8,"toc":529},"minimark",[9,16,27,45,50,69,305,320,325,328,342,362,366,370,382,447,462,467,483,488,504,508,511,519,525],[10,11,12],"p",{},[13,14,15],"strong",{},"THIS DOCUMENT DESCRIBES UPCOMING AND NOT YET RELEASED v6.3 IPFS SUPPORT. Subject to change without prior notice.",[10,17,18,19,26],{},"As of v6.3 BEAM adds IPFS support and IPFS can be accessed via API. Refer ",[20,21,25],"a",{"href":22,"rel":23},"https:\u002F\u002Fgithub.com\u002FBeamMW\u002Fbeam\u002Fwiki\u002FBeam-wallet-protocol-API-v6.3",[24],"nofollow","version 6.3 API"," docs for details on supported IPFS calls.",[28,29,30,34,42],"ul",{},[31,32,33],"li",{},"in Desktop UI client IPFS is enabled by default. IPFS node is started when user launches any DApp granting full IPFS support to DApps. After IPFS node is started it continues to run until desktop client is closed.",[31,35,36,37,41],{},"in wallet-api IPFS support is disabled by default, ",[38,39,40],"code",{},"--enable_ipfs=true"," option should be specified to start IPFS node granting full IPFS support",[31,43,44],{},"in Mobile clients & WASM client limited IPFS support is enabled. No local IPFS node is started, write-only methods like ipfs_add\u002Fipfs_pin would fail. Read-only methods like ipfs_get are enabled via HTTP calls to BEAM managed IPFS nodes.",[46,47,49],"h2",{"id":48},"beam-ipfs-config","BEAM IPFS Config",[10,51,52,53,56,57,60,61,64,65,68],{},"BEAM IPFS repository is located in the ",[38,54,55],{},"[wallet data folder]\u002Fipfs-repo"," until ",[38,58,59],{},"--ipfs_repo=[path]"," option is specified for API CLI or ",[38,62,63],{},"[ipfsnode] ipfs_repo=[path]"," in Desktop ",[38,66,67],{},"settings.ini"," file. When there is no initialized IPFS repository in the given path it would be automatically initialized with the default 'server' IPFS profile for API CLI and with the default (client) profile for Desktop Client except the following custom BEAM settings:",[28,70,71,89,106,119,135,148,161,174,187,199,205,218,230,242,259,274,284,293,296,299,302],{},[31,72,73,76,77,80,81,84,85,88],{},[38,74,75],{},"Swarm.ConnMgr.LowWater"," - is set to ",[38,78,79],{},"100",". Can be changed using ",[38,82,83],{},"--ipfs_low_water"," option in API CLI and using ",[38,86,87],{},"[ipfsnode] ipfs_low_water="," in Desktop client 'settings.ini' file.",[31,90,91,94,95,98,99,102,103],{},[38,92,93],{},"Swarm.ConnMgr.HighWater"," - ",[38,96,97],{},"200"," \u002F ",[38,100,101],{},"--ipfs_high_water",", ",[38,104,105],{},"settings.ini -> [ipfsnode] ipfs_high_water=",[31,107,108,109,98,112,102,115,118],{},"Swarm.ConnMgr.GracePeriod - ",[38,110,111],{},"20s",[38,113,114],{},"--ipfs_grace_period",[38,116,117],{},"settings.ini -> [ipfsnode] ipfs_grace_period="," as uint32 seconds",[31,120,121,122,125,126,131,132],{},"Bootstrap - default BEAM bootstrap node(s) \u002F ",[38,123,124],{},"--ipfs_bootstrap"," (space separated ",[20,127,130],{"href":128,"rel":129},"https:\u002F\u002Fgithub.com\u002Fmultiformats\u002Fmultiaddr",[24],"multiaddr"," list), ",[38,133,134],{},"settings.ini -> [ipfsnode] ipfs_bootstrap=",[31,136,137,138,141,142,102,145],{},"Addresses.Swarm - custom ",[38,139,140],{},"10100"," listening port \u002F ",[38,143,144],{},"--ipfs_swarm_port",[38,146,147],{},"settings.ini -> [ipfsnode] ipfs_swarm_port=",[31,149,150,151,154,155,102,158],{},"Addresses.API - custom ",[38,152,153],{},"\u002Fip4\u002F127.0.0.1\u002Ftcp\u002F6100"," listening address for API \u002F empty (API disabled) on Desktop \u002F ",[38,156,157],{},"--ipfs_api_addr",[38,159,160],{},"settings.ini -> [ipfsnode] ipfs_api_addr=",[31,162,163,164,167,168,102,171],{},"Addresses.Gateway - custom ",[38,165,166],{},"\u002Fip4\u002F127.0.0.1\u002Ftcp\u002F6200"," listening address in API \u002F empty (Gateway disabled) on Desktop \u002F ",[38,169,170],{},"--ipfs_gateway_addr",[38,172,173],{},"settings.ini -> [ipfsnode] ipfs_gateway_addr=",[31,175,176,177,180,181,102,184],{},"Swarm.EnableAutoRelay - false in API \u002F ",[38,178,179],{},"true"," on Desktop \u002F ",[38,182,183],{},"--ipfs_auto_relay",[38,185,186],{},"settings.ini -> [ipfsnode] ipfs_auto_relay=",[31,188,189,190,98,193,102,196],{},"Swarm.EnableRelayHop - ",[38,191,192],{},"false",[38,194,195],{},"--ipfs_relay_hop",[38,197,198],{},"settings.ini -> [ipfsnode] ipfs_relay_hop=",[31,200,201,202,204],{},"Swarm.Transports.Network.Relay - forced to ",[38,203,179],{}," everywhere. Not adjustable at the moment.",[31,206,207,208,98,211,102,214,217],{},"AutoNAT.ServiceMode - ",[38,209,210],{},"enabled",[38,212,213],{},"--ipfs_autonat",[38,215,216],{},"settings.ini -> [ipfsnode] ipfs_autonat="," as bool",[31,219,220,221,98,224,102,227],{},"AutoNAT.Throttle.GlobalLimit - ",[38,222,223],{},"30",[38,225,226],{},"--ipfs_autonat_limit",[38,228,229],{},"settings.ini -> [ipfsnode] ipfs_autonat_limit=",[31,231,232,233,98,236,102,239],{},"AutoNAT.Throttle.PeerLimit - ",[38,234,235],{},"3",[38,237,238],{},"--ipfs_autonat_peer_limit",[38,240,241],{},"settings.ini -> [ipfsnode] ipfs_autonat_peer_limit=",[31,243,244,245,248,249,252,253,102,256],{},"Datastore.StorageMax - ",[38,246,247],{},"20GB"," in API CLI \u002F ",[38,250,251],{},"2GB"," in Desktop client \u002F ",[38,254,255],{},"--ipfs_storage_max",[38,257,258],{},"settings.ini -> [ipfsnode] ipfs_storage_max=",[31,260,261,262,248,265,252,268,102,271],{},"Routing.Type - ",[38,263,264],{},"dhtserver",[38,266,267],{},"dht",[38,269,270],{},"--ipfs_routing_type",[38,272,273],{},"settings.ini -> [ipfsnode] ipfs_routing_type=",[31,275,276,277,102,280,283],{},"swarm.key file is created to ensure connection to the BEAM private IPFS network \u002F ",[38,278,279],{},"--ipfs_swarm_key",[38,281,282],{},"settings.ini -> [ipfsnode] ipfs_swarm_key="," as string",[31,285,286,287,102,290,217],{},"IPFS periodic GC is disabled in API CLI \u002F launched in Desktop Client \u002F ",[38,288,289],{},"--ipfs_run_gc",[38,291,292],{},"settings.ini -> [ipfsnode] ipfs_run_gc=",[31,294,295],{},"sockets-based activation for \"io.ipfs.api\" and \"io.ipfs.gateway\" is disabled at the moment and is not planned in the future. Contact us if you need this feature.",[31,297,298],{},"WebUI is not supported and disabled, will be supported in the future",[31,300,301],{},"fuse mounts for \"\u002Fipfs\" and \"\u002Fipfs\" are not supported and disabled, will be supported in the future",[31,303,304],{},"remote pinning for MFS roots is not supported and disabled, will be supported in the future",[10,306,307,308,311,312,315,316,319],{},"There are no changes in default IPFS repo layout, all default config and data files are and you are able to manage the IPFS repo via default IPFS cli tool paired with the ",[38,309,310],{},"IPFS_PATH"," environment variable. Ensure that BEAM client that uses the repo is not launched when accessing it using IPFS cli. In case of Desktop client's IPFS repo ",[38,313,314],{},"ipfs_node_api_port","\u002F",[38,317,318],{},"Addresses.API"," setting should be specified  before running daemon or it would crash. go-ipfs is unable to launch without API support.",[321,322,324],"h3",{"id":323},"ipfs-repoconfiglock-file","ipfs-repo\u002Fconfig.lock file",[10,326,327],{},"This section describes BEAM extension to IPFS repo & config handling.",[10,329,330,331,334,335,337,338,341],{},"On every start BEAM would force and overwrite the aforementioned BEAM custom settings in the ",[38,332,333],{},"ipfs-repo\u002Fconfig"," file. If you want to cancel this behavior, edit the ",[38,336,333],{}," file manually or via cli and preserve your custom changes ",[38,339,340],{},"ipfs-repo\u002Fconfig.lock"," file should be created.",[10,343,344,345,347,348,350,351,354,355,358,359,361],{},"If ",[38,346,340],{}," is present BEAM would not make any changes to the ",[38,349,333],{}," file. All BEAM ways to change IPFS settings are immediately blocked and ignored including ",[38,352,353],{},"--ipfs-xxx"," CLI options, any IPFS options set in ",[38,356,357],{},"wallet_api.cfg"," file, any IPFS options set via desktop UI and any IPFS options set in desktop UI ",[38,360,67],{}," file.",[46,363,365],{"id":364},"useful-stuff","Useful stuff",[321,367,369],{"id":368},"access-beam-ipfs-node-using-standard-ipfs-cli-tool","Access BEAM IPFS node using standard IPFS cli tool",[371,372,373,376,379],"ol",{},[31,374,375],{},"Start wallet api",[31,377,378],{},"Install go-ipfs",[31,380,381],{},"Create beam-ipfs bash script (do not forget to change your paths)",[383,384,389],"pre",{"className":385,"code":386,"language":387,"meta":388,"style":388},"language-bash shiki shiki-themes github-dark","#\u002Fbin\u002Fbash\nexport IPFS_PATH=\u002Fhome\u002Fubuntu\u002Fbeam-api\u002Fipfs-repo\u002F\n# uncomment the following line if you're using private IPFS network\n# export LIBP2P_FORCE_PNET=1\n\u002Fhome\u002Fubuntu\u002Fgo-ipfs-node\u002Fipfs \"$@\"\n","bash","",[38,390,391,400,417,423,429],{"__ignoreMap":388},[392,393,396],"span",{"class":394,"line":395},"line",1,[392,397,399],{"class":398},"sAwPA","#\u002Fbin\u002Fbash\n",[392,401,403,407,411,414],{"class":394,"line":402},2,[392,404,406],{"class":405},"snl16","export",[392,408,410],{"class":409},"s95oV"," IPFS_PATH",[392,412,413],{"class":405},"=",[392,415,416],{"class":409},"\u002Fhome\u002Fubuntu\u002Fbeam-api\u002Fipfs-repo\u002F\n",[392,418,420],{"class":394,"line":419},3,[392,421,422],{"class":398},"# uncomment the following line if you're using private IPFS network\n",[392,424,426],{"class":394,"line":425},4,[392,427,428],{"class":398},"# export LIBP2P_FORCE_PNET=1\n",[392,430,432,436,440,444],{"class":394,"line":431},5,[392,433,435],{"class":434},"svObZ","\u002Fhome\u002Fubuntu\u002Fgo-ipfs-node\u002Fipfs",[392,437,439],{"class":438},"sU2Wk"," \"",[392,441,443],{"class":442},"sDLfK","$@",[392,445,446],{"class":438},"\"\n",[10,448,449,450,452,453,455,456,458,459,461],{},"In desktop client IPFS node API is disabled by default. ",[38,451,314],{}," should be set in ",[38,454,67],{}," or ",[38,457,318],{}," in ",[38,460,333],{}," to access IPFS node API.",[371,463,464],{"start":425},[31,465,466],{},"Make it executable",[383,468,470],{"className":385,"code":469,"language":387,"meta":388,"style":388},"chmod  +x .\u002Fbeam_ipfs\n",[38,471,472],{"__ignoreMap":388},[392,473,474,477,480],{"class":394,"line":395},[392,475,476],{"class":434},"chmod",[392,478,479],{"class":438},"  +x",[392,481,482],{"class":438}," .\u002Fbeam_ipfs\n",[371,484,485],{"start":431},[31,486,487],{},"Execute usual ipfs commands via the script",[383,489,491],{"className":385,"code":490,"language":387,"meta":388,"style":388},".\u002Fbeam-ipfs swarm peers\n",[38,492,493],{"__ignoreMap":388},[392,494,495,498,501],{"class":394,"line":395},[392,496,497],{"class":434},".\u002Fbeam-ipfs",[392,499,500],{"class":438}," swarm",[392,502,503],{"class":438}," peers\n",[321,505,507],{"id":506},"systemd-ipfs-unit-file","SystemD IPFS unit file",[10,509,510],{},"Example below if given for a standard go-ipfs binary. You can also use the same settings for running wallet API",[383,512,517],{"className":513,"code":515,"language":516},[514],"language-text","\u002Fetc\u002Fsystemd\u002Fsystem\u002Fipfs.service\n","text",[38,518,515],{"__ignoreMap":388},[383,520,523],{"className":521,"code":522,"language":516},[514],"[Unit]\nDescription=GO IPFS Node\nAfter=network.target\n\n[Service]\nType=exec\nRestart=on-failure\nEnvironment=\"IPFS_PATH=\u002Fhome\u002Fubuntu\u002Fgo-ipfs-node\u002Frepo\"\n# uncomment if private IPFS network\n# Environment=\"LIBP2P_FORCE_PNET=1\"\nWorkingDirectory=\u002Fhome\u002Fubuntu\u002Fgo-ipfs-node\nExecStart=\u002Fhome\u002Fubuntu\u002Fgo-ipfs-node\u002Fipfs daemon\n\n[Install]\nWantedBy=multi-user.target\n",[38,524,522],{"__ignoreMap":388},[526,527,528],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":388,"searchDepth":402,"depth":402,"links":530},[531,534],{"id":48,"depth":402,"text":49,"children":532},[533],{"id":323,"depth":419,"text":324},{"id":364,"depth":402,"text":365,"children":535},[536,537],{"id":368,"depth":419,"text":369},{"id":506,"depth":419,"text":507},"md",null,{},true,"\u002Fdocs\u002Fcore-tech\u002Fbeam-ipfs-support",{"description":15},"docs\u002Fcore-tech\u002FBEAM-IPFS-Support","kuMWwdDKkHaaO3oP7MCk0Fy1pm8__F73lmVdOKuY0_E",[547,552],{"title":548,"path":549,"stem":550,"description":551,"children":-1},"Authorization Control And Signatures In Contracts","\u002Fdocs\u002Fcore-tech\u002Fauthorization-control-and-signatures-in-contracts","docs\u002Fcore-tech\u002FAuthorization-control-and-signatures-in-contracts","In the most common cases the contract method calls Env::AddSig() for each needed public key, and the app shader includes the key material for each key within the SigRequest structure, when it calls Env::GenerateKernel().",{"title":553,"path":554,"stem":555,"description":556,"children":-1},"BEAM Mining","\u002Fdocs\u002Fcore-tech\u002Fbeam-mining","docs\u002Fcore-tech\u002FBEAM-Mining","This page contains general information. For Step By Step guides on how to start Mining Beam please refer to:",1783006057851]