Documentation
¶
Index ¶
Constants ¶
View Source
const ( // DefaultABICacheSize is the number of entries we will hold in a LRU cache for ABIs DefaultABICacheSize = 25 // DefaultLevelDBName is default name of the LevelDB created in the storagePath DefaultLevelDBName = "abidb" )
View Source
const ( RemoteGateway abiType = iota RemoteInstance LocalABI )
These values will be saved with existing subscriptions. Do not remove or reorder them (only add new ones to the end).
View Source
const (
RemoteRegistryContextKey = "isRemoteRegistry"
)
Variables ¶
This section is empty.
Functions ¶
func IsRemote ¶
func IsRemote(msg messages.CommonHeaders) bool
Types ¶
type ABIInfo ¶
type ABIInfo struct {
messages.TimeSorted
ID string `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Path string `json:"path"`
Deployable bool `json:"deployable"`
SwaggerURL string `json:"openapi"`
CompilerVersion string `json:"compilerVersion"`
}
ABIInfo is the minimal data structure we keep in memory, indexed by our own UUID
type ABILocation ¶
type ABILocation struct {
ABIType abiType `json:"type"`
Name string `json:"name"`
}
type ContractInfo ¶
type ContractInfo struct {
messages.TimeSorted
Address string `json:"address"`
Path string `json:"path"`
ABI string `json:"abi"`
SwaggerURL string `json:"openapi"`
RegisteredAs string `json:"registeredAs"`
}
ContractInfo is the minimal data structure we keep in memory, indexed by address ONLY used for local registry. Remote registry handles its own storage/caching
func (*ContractInfo) GetID ¶
func (i *ContractInfo) GetID() string
type ContractResolver ¶
type ContractResolver interface {
ResolveContractAddress(registeredName string) (string, error)
GetContractByAddress(addrHex string) (*ContractInfo, error)
GetABI(location ABILocation, refresh bool) (deployMsg *DeployContractWithAddress, err error)
CheckNameAvailable(name string, isRemote bool) error
}
type ContractStore ¶
type ContractStore interface {
ContractResolver
Init() error
Close()
AddContract(addrHexNo0x, abiID, pathName, registerAs string) (*ContractInfo, error)
AddABI(id string, deployMsg *messages.DeployContract, createdTime time.Time) (*ABIInfo, error)
AddRemoteInstance(lookupStr, address string) error
GetLocalABIInfo(abiID string) (*ABIInfo, error)
ListContracts() ([]messages.TimeSortable, error)
ListABIs() ([]messages.TimeSortable, error)
}
func NewContractStore ¶
func NewContractStore(conf *ContractStoreConf, rr RemoteRegistry) ContractStore
type ContractStoreConf ¶
type DeployContractWithAddress ¶
type DeployContractWithAddress struct {
Contract *messages.DeployContract
Address string
}
type RemoteRegistry ¶
type RemoteRegistry interface {
LoadFactoryForGateway(lookupStr string, refresh bool) (*messages.DeployContract, error)
LoadFactoryForInstance(lookupStr string, refresh bool) (*DeployContractWithAddress, error)
RegisterInstance(lookupStr, address string) error
Init() error
Close()
}
RemoteRegistry lookup of ABI, ByteCode and DevDocs against a conformant REST API
func NewRemoteRegistry ¶
func NewRemoteRegistry(conf *RemoteRegistryConf) RemoteRegistry
NewRemoteRegistry construtor
type RemoteRegistryConf ¶
type RemoteRegistryConf struct {
utils.HTTPRequesterConf
CacheDB string `json:"cacheDB"`
GatewayURLPrefix string `json:"gatewayURLPrefix"`
InstanceURLPrefix string `json:"instanceURLPrefix"`
PropNames RemoteRegistryPropNamesConf `json:"propNames"`
}
RemoteRegistryConf configuration
type RemoteRegistryPropNamesConf ¶
type RemoteRegistryPropNamesConf struct {
ID string `json:"id"`
Name string `json:"name"`
ABI string `json:"abi"`
Bytecode string `json:"bytecode"`
Devdoc string `json:"devdoc"`
Deployable string `json:"deployable"`
Address string `json:"address"`
}
RemoteRegistryPropNamesConf configures the JSON property names to extract from the GET response on the API
type StoredABI ¶
type StoredABI struct {
ABIInfo
DeployMsg *messages.DeployContract `json:"deployMsg"`
}
Click to show internal directories.
Click to hide internal directories.