diff options
author | Felix Lange <fjl@twurst.com> | 2016-11-11 06:29:52 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2016-11-11 07:15:21 +0800 |
commit | 8247bccf71351812cd60179c3ef0f9d596f117c1 (patch) | |
tree | 711a6f608e074df8ab514f1e269dac457ddc1fdc | |
parent | bbf37c0404d2d189fdb0255aa70f2b4a73a81c0a (diff) | |
download | dexon-8247bccf71351812cd60179c3ef0f9d596f117c1.tar.gz dexon-8247bccf71351812cd60179c3ef0f9d596f117c1.tar.zst dexon-8247bccf71351812cd60179c3ef0f9d596f117c1.zip |
cmd/bzzhash: add swarm hashing tool
-rw-r--r-- | cmd/bzzhash/main.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/cmd/bzzhash/main.go b/cmd/bzzhash/main.go new file mode 100644 index 000000000..0ae99acc0 --- /dev/null +++ b/cmd/bzzhash/main.go @@ -0,0 +1,49 @@ +// Copyright 2016 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>. + +// Command bzzhash computes a swarm tree hash. +package main + +import ( + "fmt" + "os" + "runtime" + + "github.com/ethereum/go-ethereum/swarm/storage" +) + +func main() { + runtime.GOMAXPROCS(runtime.NumCPU()) + + if len(os.Args) < 2 { + fmt.Println("Usage: bzzhash <file name>") + os.Exit(0) + } + f, err := os.Open(os.Args[1]) + if err != nil { + fmt.Println("Error opening file " + os.Args[1]) + os.Exit(1) + } + + stat, _ := f.Stat() + chunker := storage.NewTreeChunker(storage.NewChunkerParams()) + key, err := chunker.Split(f, stat.Size(), nil, nil, nil) + if err != nil { + fmt.Fprintf(os.Stderr, "%v\n", err) + } else { + fmt.Printf("%v\n", key) + } +} |