-
Notifications
You must be signed in to change notification settings - Fork 1.7k
/
parse_randomness_request.go
52 lines (46 loc) · 1.78 KB
/
parse_randomness_request.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package models
import (
"github.com/ethereum/go-ethereum/common"
"github.com/pkg/errors"
"github.com/smartcontractkit/chainlink/core/utils"
)
// parseRandomnessRequest parses the RandomnessRequest log format.
type parseRandomnessRequest struct{}
var _ logRequestParser = parseRandomnessRequest{} // Implements logRequestParser
// parseJSON returns the inputs to be passed as a JSON object to Random adapter
func (parseRandomnessRequest) parseJSON(log Log) (js JSON, err error) {
parsedLog, err := ParseRandomnessRequestLog(log)
if err != nil {
return JSON{}, errors.Wrapf(err,
"could not parse log data %#+v as RandomnessRequest log", log)
}
fullSeedString, err := utils.Uint256ToHex(parsedLog.Seed)
if err != nil {
return JSON{}, errors.Wrap(err, "vrf seed out of bounds")
}
return js.MultiAdd(KV{
// Address of log emitter
"address": log.Address.String(),
// Signature of callback function on consuming contract
"functionSelector": VRFFulfillSelector(),
// Hash of the public key for the VRF to be used
"keyHash": parsedLog.KeyHash.Hex(),
// Raw input seed for the VRF (includes requester, nonce, etc.)
"seed": fullSeedString,
// The chainlink job corresponding to this VRF
"jobID": parsedLog.JobID.Hex(),
// Address of consuming contract which initially made the request
"sender": parsedLog.Sender.Hex(),
// Hash of the block in which this request appeared
"blockHash": log.BlockHash.Hex(),
// Number/height of the block in which this request appeared
"blockNum": log.BlockNumber,
})
}
func (parseRandomnessRequest) parseRequestID(log Log) (common.Hash, error) {
parsedLog, err := ParseRandomnessRequestLog(log)
if err != nil {
return common.Hash{}, errors.Wrapf(err, "while extracting randomness requestID from %#+v", log)
}
return parsedLog.RequestID, nil
}