Go-Ethereum

我們如何提取下載後由 swarm 生成的雜湊清單的內容?

  • January 19, 2019

據我所知,每當我們使用以下方式上傳文件或目錄時:

swarm up File

我們得到一個雜湊,它是包含上傳文件的清單。但是,我不確定在使用如下下載命令後如何提取此清單文件的內容:

swarm down bzz:/given_hash

我的目標是獲取上傳的原始文件。任何可以完成工作的想法或命令?

如果您查看清單本身,其內容的散列被列為資料結構中的條目。您可以使用該bzz-raw方案檢索雜湊的逐字數據,例如:

$ echo foo > foo.txt
$ swarm up foo.txt
f3f1f9d14ac8413d928744cad75e5620661446dcfe7108cb269305af41b164c2
$ curl -X GET http://localhost:8500/bzz-raw:/f3f1f9d14ac8413d928744cad75e5620661446dcfe7108cb269305af41b164c2/
{
 "entries": [
   {
     "hash": "01c9bc7199ce023fea5c28e07a81c2d61ba4a8f9bbed68a6eafab8ec8bbbfe0a",
     "contentType": "text/plain; charset=utf-8",
     "mode": 420,
     "size": 4,
     "mod_time": "2019-01-19T14:43:21-05:00"
   }
 ]
}
$ curl -X GET http://localhost:8500/bzz-raw:/01c9bc7199ce023fea5c28e07a81c2d61ba4a8f9bbed68a6eafab8ec8bbbfe0a/
foo

您也可以在不創建清單的情況下上傳。在這種情況下,返回的雜湊是對數據本身的引用:

$ echo bar > bar.txt
$ swarm --manifest=false up  bar.txt 
211a9fade237e05307c86135af61d3d09f82324117bcac41d7dc91da53901018
$ curl -X GET http://localhost:8500/bzz-raw:/211a9fade237e05307c86135af61d3d09f82324117bcac41d7dc91da53901018/
bar

注意,這兩種情況下的上傳動作實際上等價於:

$ curl -X POST http://localhost:8500/bzz:/ --data @foo.txt
$ curl -X POST http://localhost:8500/bzz-raw:/ --data-binary @bar.txt

引用自:https://ethereum.stackexchange.com/questions/65779