Skip to content

Commit

Permalink
Implements oracle response generation framework
Browse files Browse the repository at this point in the history
  • Loading branch information
Ashy5000 committed Jul 30, 2024
1 parent 8c3c1b0 commit 539f015
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions node_util/oracle.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
// Copyright 2024, Asher Wrobel
/*
This program 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.
This program 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 this program. If not, see <https://www.gnu.org/licenses/>.
*/
package node_util

type OracleType uint64

const (
NilType OracleType = iota
)

type OracleRequest struct {
Body []byte
Type OracleType
}

type OracleResponse struct {
Body []byte
Type OracleType
Request OracleRequest
}

type Oracle struct {
Requests []OracleRequest
Responses []OracleResponse
}

func CalculateOracleResponse(request OracleRequest) OracleResponse {
switch request.Type {
case NilType:
return OracleResponse{
Body: []byte("NULL"),
Type: 0,
Request: OracleRequest{},
}
}
panic("Unknown oracle type.")
}

func (o *Oracle) Step() {
if len(o.Requests) == 0 {
return
}
for _, req := range o.Requests {
o.Responses = append(o.Responses, CalculateOracleResponse(req))
}
o.Requests = []OracleRequest{}
}

0 comments on commit 539f015

Please sign in to comment.