MCPcopy Create free account
hub / github.com/CovenantSQL/CovenantSQL / NewExchange

Function NewExchange

cmd/cql-eth-exchange/exchange.go:89–130  ·  view source on GitHub ↗

NewExchange creates new exchange process object.

(cfg *ExchangeConfig)

Source from the content-addressed store, hash-verified

87
88// NewExchange creates new exchange process object.
89func NewExchange(cfg *ExchangeConfig) (e *Exchange, err error) {
90 e = &Exchange{
91 cfg: cfg,
92 receivedBlockMap: make(map[uint64]bool),
93 receiveAddrMap: make(map[string]bool),
94 }
95
96 // init keys
97 e.vaultPrivateKey, err = kms.GetLocalPrivateKey()
98 if err != nil {
99 return
100 }
101 e.vaultAddress, err = crypto.PubKeyHash(e.vaultPrivateKey.PubKey())
102 if err != nil {
103 return
104 }
105
106 // init meta database
107 var db *sql.DB
108 if cfg.UseLocalDatabase {
109 db, err = sql.Open("sqlite3", cfg.Database)
110 } else {
111 dsnCfg := client.Config{}
112 dsnCfg.DatabaseID = cfg.Database
113 db, err = sql.Open("covenantsql", dsnCfg.FormatDSN())
114 }
115
116 e.metaDatabase = &gorp.DbMap{Db: db, Dialect: gorp.SqliteDialect{}}
117 e.metaDatabase.AddTableWithName(TxRecord{}, "record").
118 SetKeys(false, "Hash")
119 e.metaDatabase.AddTableWithName(AuditRecord{}, "audit").
120 SetKeys(true, "ID")
121 if err = e.metaDatabase.CreateTablesIfNotExists(); err != nil {
122 return
123 }
124
125 for _, addr := range cfg.ReceiveAddresses {
126 e.receiveAddrMap[addr.String()] = true
127 }
128
129 return
130}
131
132// Start connects to server and listen to new blocks for token exchanges.
133func (e *Exchange) Start(ctx context.Context) (err error) {

Callers 1

mainFunction · 0.85

Calls 6

FormatDSNMethod · 0.95
GetLocalPrivateKeyFunction · 0.92
PubKeyHashFunction · 0.92
PubKeyMethod · 0.80
OpenMethod · 0.45
StringMethod · 0.45

Tested by

no test coverage detected