Skip to content

Commit 8a74c26

Browse files
committed
feat(data_structures): use lowercase for encoding/decoding fees
also: add tests for Fee decoding
1 parent b2383b2 commit 8a74c26

File tree

11 files changed

+83
-13
lines changed

11 files changed

+83
-13
lines changed

data_structures/src/fee.rs

Lines changed: 73 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,12 +102,14 @@ impl num_traits::Zero for RelativeFee {
102102
}
103103
}
104104

105-
#[derive(Copy, Clone, Debug, Deserialize, Hash, PartialEq, Eq, PartialOrd, Serialize)]
106105
/// Type for representing a fee value that can be absolute (nanoWits) or relative (priority).
106+
#[derive(Copy, Clone, Debug, Deserialize, Hash, PartialEq, Eq, PartialOrd, Serialize)]
107+
#[serde(rename_all = "lowercase")]
107108
pub enum Fee {
108109
/// An absolute fee, as expressed in nanoWits.
109110
Absolute(AbsoluteFee),
110-
/// A relative fee, aka "priority", as expressed as nanoWits (or fractional amounts) per weightunit.
111+
/// A relative fee, aka "priority", as expressed as nanoWits (or fractional amounts) per weight
112+
/// unit.
111113
Relative(RelativeFee),
112114
}
113115

@@ -166,20 +168,88 @@ pub fn deserialize_fee_backwards_compatible<'de, D>(deserializer: D) -> Result<F
166168
where
167169
D: serde::Deserializer<'de>,
168170
{
171+
#[derive(Deserialize)]
172+
#[serde(rename_all = "lowercase")]
173+
enum StringedFee {
174+
Absolute(String),
175+
Relative(String),
176+
}
177+
169178
#[derive(Deserialize)]
170179
#[serde(untagged)]
171180
enum Untagged {
172181
Fee(Fee),
173182
Integer(u64),
174183
String(String),
184+
StringedFee(StringedFee),
175185
}
176186

177187
Ok(match Untagged::deserialize(deserializer)? {
178188
Untagged::Fee(fee) => fee,
179189
Untagged::Integer(integer) => Fee::absolute_from_nanowits(integer),
180-
Untagged::String(string) => string
190+
Untagged::String(string) | Untagged::StringedFee(StringedFee::Absolute(string)) => string
181191
.parse::<u64>()
182192
.map(Fee::absolute_from_nanowits)
183193
.map_err(serde::de::Error::custom)?,
194+
Untagged::StringedFee(StringedFee::Relative(string)) => string
195+
.parse::<f64>()
196+
.map(Fee::relative_from_float)
197+
.map_err(serde::de::Error::custom)?,
184198
})
185199
}
200+
201+
#[cfg(test)]
202+
mod tests {
203+
use super::*;
204+
205+
#[test]
206+
fn test_deserialize_fee_backwards_compatible() {
207+
let mut deserializer = serde_json::Deserializer::from_str("123");
208+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
209+
assert_eq!(fee, Fee::absolute_from_nanowits(123));
210+
211+
let mut deserializer = serde_json::Deserializer::from_str("\"123\"");
212+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
213+
assert_eq!(fee, Fee::absolute_from_nanowits(123));
214+
215+
let mut deserializer = serde_json::Deserializer::from_str("123.456");
216+
let error = deserialize_fee_backwards_compatible(&mut deserializer).unwrap_err();
217+
assert!(matches!(error, serde_json::Error { .. }));
218+
219+
let mut deserializer = serde_json::Deserializer::from_str("\"123.456\"");
220+
let error = deserialize_fee_backwards_compatible(&mut deserializer).unwrap_err();
221+
assert!(matches!(error, serde_json::Error { .. }));
222+
223+
let mut deserializer = serde_json::Deserializer::from_str("{\"absolute\":123}");
224+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
225+
assert_eq!(fee, Fee::absolute_from_nanowits(123));
226+
227+
let mut deserializer = serde_json::Deserializer::from_str("{\"absolute\":\"123\"}");
228+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
229+
assert_eq!(fee, Fee::absolute_from_nanowits(123));
230+
231+
let mut deserializer = serde_json::Deserializer::from_str("{\"absolute\":123.456}");
232+
let error = deserialize_fee_backwards_compatible(&mut deserializer).unwrap_err();
233+
assert!(matches!(error, serde_json::Error { .. }));
234+
235+
let mut deserializer = serde_json::Deserializer::from_str("{\"absolute\":\"123.456\"}");
236+
let error = deserialize_fee_backwards_compatible(&mut deserializer).unwrap_err();
237+
assert!(matches!(error, serde_json::Error { .. }));
238+
239+
let mut deserializer = serde_json::Deserializer::from_str("{\"relative\":123}");
240+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
241+
assert_eq!(fee, Fee::relative_from_float(123.0));
242+
243+
let mut deserializer = serde_json::Deserializer::from_str("{\"relative\":\"123\"}");
244+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
245+
assert_eq!(fee, Fee::relative_from_float(123.0));
246+
247+
let mut deserializer = serde_json::Deserializer::from_str("{\"relative\":123.456}");
248+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
249+
assert_eq!(fee, Fee::relative_from_float(123.456));
250+
251+
let mut deserializer = serde_json::Deserializer::from_str("{\"relative\":\"123.456\"}");
252+
let fee = deserialize_fee_backwards_compatible(&mut deserializer).unwrap();
253+
assert_eq!(fee, Fee::relative_from_float(123.456));
254+
}
255+
}

examples/bitcoin_last_hash.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://blockchain.info/q/latesthash","script":[128]},{"kind":"HTTP-GET","url":"https://api-r.bitcoinchain.com/v1/status","script":[130,24,119,130,24,103,100,104,97,115,104]},{"kind":"HTTP-GET","url":"https://api.blockchair.com/bitcoin/stats","script":[131,24,119,130,24,102,100,100,97,116,97,130,24,103,111,98,101,115,116,95,98,108,111,99,107,95,104,97,115,104]},{"kind":"HTTP-POST","url":"https://graphql.bitquery.io/","script":[134,24,119,130,24,102,100,100,97,116,97,130,24,102,103,98,105,116,99,111,105,110,130,24,97,102,98,108,111,99,107,115,130,24,24,0,130,24,103,105,98,108,111,99,107,72,97,115,104],"body":[123,34,113,117,101,114,121,34,58,34,113,117,101,114,121,123,92,110,98,105,116,99,111,105,110,32,123,92,110,98,108,111,99,107,115,40,111,112,116,105,111,110,115,58,32,123,108,105,109,105,116,58,32,49,44,32,100,101,115,99,58,32,92,34,104,101,105,103,104,116,92,34,125,41,32,123,92,110,104,101,105,103,104,116,92,110,98,108,111,99,107,72,97,115,104,92,110,125,92,110,125,92,110,125,34,44,34,118,97,114,105,97,98,108,101,115,34,58,110,117,108,108,125],"headers":[["Accept","*/*"],["Referer","https://bitquery.io/"],["Content-Type","application/json"],["Origin","https://bitquery.io"]]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[{"op":8,"args":[]}],"reducer":2}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":0},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://blockchain.info/q/latesthash","script":[128]},{"kind":"HTTP-GET","url":"https://api-r.bitcoinchain.com/v1/status","script":[130,24,119,130,24,103,100,104,97,115,104]},{"kind":"HTTP-GET","url":"https://api.blockchair.com/bitcoin/stats","script":[131,24,119,130,24,102,100,100,97,116,97,130,24,103,111,98,101,115,116,95,98,108,111,99,107,95,104,97,115,104]},{"kind":"HTTP-POST","url":"https://graphql.bitquery.io/","script":[134,24,119,130,24,102,100,100,97,116,97,130,24,102,103,98,105,116,99,111,105,110,130,24,97,102,98,108,111,99,107,115,130,24,24,0,130,24,103,105,98,108,111,99,107,72,97,115,104],"body":[123,34,113,117,101,114,121,34,58,34,113,117,101,114,121,123,92,110,98,105,116,99,111,105,110,32,123,92,110,98,108,111,99,107,115,40,111,112,116,105,111,110,115,58,32,123,108,105,109,105,116,58,32,49,44,32,100,101,115,99,58,32,92,34,104,101,105,103,104,116,92,34,125,41,32,123,92,110,104,101,105,103,104,116,92,110,98,108,111,99,107,72,97,115,104,92,110,125,92,110,125,92,110,125,34,44,34,118,97,114,105,97,98,108,101,115,34,58,110,117,108,108,125],"headers":[["Accept","*/*"],["Referer","https://bitquery.io/"],["Content-Type","application/json"],["Origin","https://bitquery.io"]]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[{"op":8,"args":[]}],"reducer":2}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":0},"dry_run":false}}

examples/bitcoin_price.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":1574703683,"retrieve":[{"kind":"HTTP-GET","url":"https://www.bitstamp.net/api/ticker/","script":[130,24,119,130,24,100,100,108,97,115,116]},{"kind":"HTTP-GET","url":"https://api.coindesk.com/v1/bpi/currentprice.json","script":[132,24,119,130,24,102,99,98,112,105,130,24,102,99,85,83,68,130,24,100,106,114,97,116,101,95,102,108,111,97,116]},{"kind":"HTTP-POST","url":"https://api.blocktap.io/graphql","script":[135,24,119,130,24,102,100,100,97,116,97,130,24,97,103,109,97,114,107,101,116,115,130,24,24,0,130,24,102,102,116,105,99,107,101,114,130,24,103,105,108,97,115,116,80,114,105,99,101,24,114],"body":[123,34,113,117,101,114,121,34,58,34,113,117,101,114,121,32,112,114,105,99,101,32,123,92,110,32,32,109,97,114,107,101,116,115,40,102,105,108,116,101,114,58,123,32,98,97,115,101,83,121,109,98,111,108,58,32,123,95,101,113,58,92,34,66,84,67,92,34,125,32,113,117,111,116,101,83,121,109,98,111,108,58,32,123,95,105,110,58,91,92,34,85,83,68,92,34,44,92,34,85,83,68,84,92,34,93,125,32,109,97,114,107,101,116,83,116,97,116,117,115,58,32,123,32,95,101,113,58,32,65,99,116,105,118,101,32,125,125,41,32,123,92,110,32,32,32,32,109,97,114,107,101,116,83,121,109,98,111,108,92,110,32,32,32,32,116,105,99,107,101,114,32,123,92,110,32,32,32,32,32,32,108,97,115,116,80,114,105,99,101,92,110,32,32,32,32,125,92,110,32,32,125,92,110,125,34,44,34,118,97,114,105,97,98,108,101,115,34,58,110,117,108,108,44,34,111,112,101,114,97,116,105,111,110,78,97,109,101,34,58,34,112,114,105,99,101,34,125],"headers":[["Content-Type","application/json"]]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[],"reducer":3}},"witness_reward":1000,"witnesses":2,"commit_and_reveal_fee":1,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":10},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":1574703683,"retrieve":[{"kind":"HTTP-GET","url":"https://www.bitstamp.net/api/ticker/","script":[130,24,119,130,24,100,100,108,97,115,116]},{"kind":"HTTP-GET","url":"https://api.coindesk.com/v1/bpi/currentprice.json","script":[132,24,119,130,24,102,99,98,112,105,130,24,102,99,85,83,68,130,24,100,106,114,97,116,101,95,102,108,111,97,116]},{"kind":"HTTP-POST","url":"https://api.blocktap.io/graphql","script":[135,24,119,130,24,102,100,100,97,116,97,130,24,97,103,109,97,114,107,101,116,115,130,24,24,0,130,24,102,102,116,105,99,107,101,114,130,24,103,105,108,97,115,116,80,114,105,99,101,24,114],"body":[123,34,113,117,101,114,121,34,58,34,113,117,101,114,121,32,112,114,105,99,101,32,123,92,110,32,32,109,97,114,107,101,116,115,40,102,105,108,116,101,114,58,123,32,98,97,115,101,83,121,109,98,111,108,58,32,123,95,101,113,58,92,34,66,84,67,92,34,125,32,113,117,111,116,101,83,121,109,98,111,108,58,32,123,95,105,110,58,91,92,34,85,83,68,92,34,44,92,34,85,83,68,84,92,34,93,125,32,109,97,114,107,101,116,83,116,97,116,117,115,58,32,123,32,95,101,113,58,32,65,99,116,105,118,101,32,125,125,41,32,123,92,110,32,32,32,32,109,97,114,107,101,116,83,121,109,98,111,108,92,110,32,32,32,32,116,105,99,107,101,114,32,123,92,110,32,32,32,32,32,32,108,97,115,116,80,114,105,99,101,92,110,32,32,32,32,125,92,110,32,32,125,92,110,125,34,44,34,118,97,114,105,97,98,108,101,115,34,58,110,117,108,108,44,34,111,112,101,114,97,116,105,111,110,78,97,109,101,34,58,34,112,114,105,99,101,34,125],"headers":[["Content-Type","application/json"]]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[],"reducer":3}},"witness_reward":1000,"witnesses":2,"commit_and_reveal_fee":1,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":10},"dry_run":false}}

examples/error_301_source.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"http://www.skyverge.com/woocommerce–rest–api-docs.html#authentication/over-https","script":[131,24,119,130,24,97,100,100,97,116,97,130,22,0]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[],"reducer":3}},"witness_reward":1000,"witnesses":2,"commit_and_reveal_fee":5,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":0},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"http://www.skyverge.com/woocommerce–rest–api-docs.html#authentication/over-https","script":[131,24,119,130,24,97,100,100,97,116,97,130,22,0]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[],"reducer":3}},"witness_reward":1000,"witnesses":2,"commit_and_reveal_fee":5,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":0},"dry_run":false}}

examples/mojitoswap.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-POST","url":"https://thegraph.kcc.network/subgraphs/name/mojito/swap","script":[134,24,119,130,24,102,100,100,97,116,97,130,24,97,103,98,117,110,100,108,101,115,130,24,24,0,130,24,103,104,101,116,104,80,114,105,99,101,24,114],"body":[123,34,111,112,101,114,97,116,105,111,110,78,97,109,101,34,58,34,98,117,110,100,108,101,115,34,44,34,118,97,114,105,97,98,108,101,115,34,58,123,125,44,34,113,117,101,114,121,34,58,34,113,117,101,114,121,32,98,117,110,100,108,101,115,32,123,92,110,32,32,98,117,110,100,108,101,115,40,119,104,101,114,101,58,32,123,105,100,58,32,49,125,41,32,123,92,110,32,32,32,32,105,100,92,110,32,32,32,32,101,116,104,80,114,105,99,101,92,110,32,32,32,32,95,95,116,121,112,101,110,97,109,101,92,110,32,32,125,92,110,125,92,110,34,125],"headers":[["Content-Type","application/json"]]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[],"reducer":3}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":0},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-POST","url":"https://thegraph.kcc.network/subgraphs/name/mojito/swap","script":[134,24,119,130,24,102,100,100,97,116,97,130,24,97,103,98,117,110,100,108,101,115,130,24,24,0,130,24,103,104,101,116,104,80,114,105,99,101,24,114],"body":[123,34,111,112,101,114,97,116,105,111,110,78,97,109,101,34,58,34,98,117,110,100,108,101,115,34,44,34,118,97,114,105,97,98,108,101,115,34,58,123,125,44,34,113,117,101,114,121,34,58,34,113,117,101,114,121,32,98,117,110,100,108,101,115,32,123,92,110,32,32,98,117,110,100,108,101,115,40,119,104,101,114,101,58,32,123,105,100,58,32,49,125,41,32,123,92,110,32,32,32,32,105,100,92,110,32,32,32,32,101,116,104,80,114,105,99,101,92,110,32,32,32,32,95,95,116,121,112,101,110,97,109,101,92,110,32,32,125,92,110,125,92,110,34,125],"headers":[["Content-Type","application/json"]]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[],"reducer":3}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":0},"dry_run":false}}

examples/random_bytes.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"RNG","url":"","script":[128]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[],"reducer":11}},"witness_reward":1000,"witnesses":5,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":0},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"RNG","url":"","script":[128]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[],"reducer":11}},"witness_reward":1000,"witnesses":5,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":0},"dry_run":false}}

examples/random_source.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://randomuser.me/api/","script":[134,24,119,130,24,97,103,114,101,115,117,108,116,115,130,24,24,0,130,24,102,99,100,111,98,130,24,100,99,97,103,101,24,91]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[{"op":5,"args":[249, 60, 0]}],"reducer":3}},"witness_reward":1000,"witnesses":4,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":0},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://randomuser.me/api/","script":[134,24,119,130,24,97,103,114,101,115,117,108,116,115,130,24,24,0,130,24,102,99,100,111,98,130,24,100,99,97,103,101,24,91]}],"aggregate":{"filters":[],"reducer":3},"tally":{"filters":[{"op":5,"args":[249, 60, 0]}],"reducer":3}},"witness_reward":1000,"witnesses":4,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":0},"dry_run":false}}

examples/xml_source.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://api-liscon21.wittycreatures.com/metadata/1","script":[135, 24, 119, 130, 24, 103, 106, 105, 109, 97, 103, 101, 95, 100, 97, 116, 97, 24, 120, 130, 24, 102, 99, 115, 118, 103, 130, 24, 97, 100, 112, 97, 116, 104, 130, 24, 24, 0, 130, 24, 103, 101, 64, 102, 105, 108, 108]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[{"op":8,"args":[]}],"reducer":2}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":0},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://api-liscon21.wittycreatures.com/metadata/1","script":[135, 24, 119, 130, 24, 103, 106, 105, 109, 97, 103, 101, 95, 100, 97, 116, 97, 24, 120, 130, 24, 102, 99, 115, 118, 103, 130, 24, 97, 100, 112, 97, 116, 104, 130, 24, 24, 0, 130, 24, 103, 101, 64, 102, 105, 108, 108]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[{"op":8,"args":[]}],"reducer":2}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":0},"dry_run":false}}

examples/xml_source2.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://forecast.weather.gov/MapClick.php?lat=39.75&lon=-104.99&unit=0&lg=english&FcstType=dwml","script":[137, 24, 120, 130, 24, 102, 100, 100, 119, 109, 108, 130, 24, 97, 100, 100, 97, 116, 97, 130, 24, 24, 0, 130, 24, 102, 106, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 130, 24, 102, 103, 119, 101, 97, 116, 104, 101, 114, 130, 24, 97, 114, 119, 101, 97, 116, 104, 101, 114, 45, 99, 111, 110, 100, 105, 116, 105, 111, 110, 115, 130, 24, 24, 2, 130, 24, 103, 112, 64, 119, 101, 97, 116, 104, 101, 114, 45, 115, 117, 109, 109, 97, 114, 121]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[{"op":8,"args":[]}],"reducer":2}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"Absolute":1000},"dry_run":false}}
1+
{"jsonrpc":"2.0","method":"sendRequest","id":"1","params":{"dro":{"data_request":{"time_lock":0,"retrieve":[{"kind":"HTTP-GET","url":"https://forecast.weather.gov/MapClick.php?lat=39.75&lon=-104.99&unit=0&lg=english&FcstType=dwml","script":[137, 24, 120, 130, 24, 102, 100, 100, 119, 109, 108, 130, 24, 97, 100, 100, 97, 116, 97, 130, 24, 24, 0, 130, 24, 102, 106, 112, 97, 114, 97, 109, 101, 116, 101, 114, 115, 130, 24, 102, 103, 119, 101, 97, 116, 104, 101, 114, 130, 24, 97, 114, 119, 101, 97, 116, 104, 101, 114, 45, 99, 111, 110, 100, 105, 116, 105, 111, 110, 115, 130, 24, 24, 2, 130, 24, 103, 112, 64, 119, 101, 97, 116, 104, 101, 114, 45, 115, 117, 109, 109, 97, 114, 121]}],"aggregate":{"filters":[],"reducer":2},"tally":{"filters":[{"op":8,"args":[]}],"reducer":2}},"witness_reward":1000,"witnesses":3,"commit_and_reveal_fee":10,"min_consensus_percentage":51,"collateral":1000000000},"fee":{"absolute":1000},"dry_run":false}}

0 commit comments

Comments
 (0)