Upload files to "c2s_ipfs_payloads/pkg"
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
// Package contract handles smart contract interaction for the fully
|
||||
// decentralized CID feed mode (MODE B).
|
||||
//
|
||||
// This file only contains the interface. The actual implementation requires
|
||||
// go-ethereum and is in contract_eth.go (build tag: ethereum).
|
||||
package contract
|
||||
|
||||
import "errors"
|
||||
|
||||
// CIDEvent represents a NewCID event emitted by the smart contract.
|
||||
type CIDEvent struct {
|
||||
CID string
|
||||
Sender string
|
||||
Timestamp uint64
|
||||
BlockNum uint64
|
||||
TxHash string
|
||||
}
|
||||
|
||||
// Watcher watches a smart contract for NewCID events.
|
||||
type Watcher interface {
|
||||
// Watch starts watching for new CID events. The callback is called
|
||||
// for each event. Returns a channel that receives an error on failure.
|
||||
Watch(callback func(CIDEvent)) (<-chan error, error)
|
||||
|
||||
// GetLatestCID fetches the current CID from the contract.
|
||||
GetLatestCID() (string, error)
|
||||
|
||||
// SendCID submits a new CID to the contract (requires wallet).
|
||||
SendCID(cid string, privateKeyHex string) (string, error)
|
||||
|
||||
// Close cleans up the watcher.
|
||||
Close()
|
||||
}
|
||||
|
||||
// ErrNotCompiledWithEthereum is returned when the binary is not built with
|
||||
// the ethereum build tag.
|
||||
var ErrNotCompiledWithEthereum = errors.New("not compiled with -tags ethereum; rebuild with: go build -tags ethereum")
|
||||
|
||||
// PlaceholderWatcher returns errors requiring go-ethereum.
|
||||
type PlaceholderWatcher struct{}
|
||||
|
||||
func (p *PlaceholderWatcher) Watch(callback func(CIDEvent)) (<-chan error, error) {
|
||||
return nil, ErrNotCompiledWithEthereum
|
||||
}
|
||||
|
||||
func (p *PlaceholderWatcher) GetLatestCID() (string, error) {
|
||||
return "", ErrNotCompiledWithEthereum
|
||||
}
|
||||
|
||||
func (p *PlaceholderWatcher) SendCID(cid, privateKeyHex string) (string, error) {
|
||||
return "", ErrNotCompiledWithEthereum
|
||||
}
|
||||
|
||||
func (p *PlaceholderWatcher) Close() {}
|
||||
|
||||
// NewWatcher creates a contract watcher. If go-ethereum is not available,
|
||||
// returns a placeholder that errors.
|
||||
var NewWatcher func(rpcURL, contractAddr string) (Watcher, error) = func(rpcURL, contractAddr string) (Watcher, error) {
|
||||
return &PlaceholderWatcher{}, ErrNotCompiledWithEthereum
|
||||
}
|
||||
Reference in New Issue
Block a user