Merge pull request #1258 from jakeatdocforce/code_samples_page_mduo13

Code samples page expanding on mduo13 work
This commit is contained in:
Rome Reginelli
2022-05-16 17:43:36 -07:00
committed by GitHub
87 changed files with 704 additions and 260 deletions

View File

@@ -0,0 +1,3 @@
# Address Encoding
Encode XRP Ledger addresses in base58. (This reference implementation is equivalent to the ones included in most client libraries.)

View File

@@ -0,0 +1,3 @@
# Build a Wallet
Implement a non-custodial wallet application that can check an account's balances, send XRP, and notify when the account receives incoming transactions.

View File

@@ -0,0 +1,3 @@
# Use Checks
Create, cash, and cancel Checks for exact or flexible amounts.

View File

@@ -0,0 +1,5 @@
# Escrows
Create, finish, and cancel [Escrows](https://xrpl.org/escrow.html) using conditional or time-based release.
Examples from the [Escrow Tutorials](https://xrpl.org/use-escrows.html).

View File

@@ -0,0 +1,5 @@
# Freezes
Freeze and unfreeze issued tokens, check freeze status, or give up the ability to freeze tokens.
Examples from the [Freeze tutorials](https://xrpl.org/use-tokens.html).

View File

@@ -0,0 +1,9 @@
# Introductory Code Samples
Connect to the XRP Ledger and query it for data.
For more context, see the Get Started tutorial for your preferred language:
- [Python](https://xrpl.org/get-started-using-python.html)
- [Java](https://xrpl.org/get-started-using-java.html)
- [JavaScript](https://xrpl.org/get-started-using-javascript.html)

View File

@@ -0,0 +1,5 @@
# Issue a Fungible Token
Configure issuer settings and issue fungible tokens to another account.
For an interactive tutorial demonstrating the function of these code samples, see [Issue a Fungible Token](https://xrpl.org/issue-a-fungible-token.html).

View File

@@ -0,0 +1,5 @@
# Cryptographic Key Derivation
Derive secp256k1 or Ed25519 key pairs from seeds in any of the XRP Ledger's encodings and formats. (This implementation is equivalent to the ones included in most client libraries.)
For background and diagrams, see [Key Derivation](https://xrpl.org/cryptographic-keys.html#key-derivation).

View File

@@ -1,476 +0,0 @@
{
"AffectedNodes": [
{
"ModifiedNode": {
"FinalFields": {
"Account": "r9ZoLsJHzMMJLpvsViWQ4Jgx17N8cz1997",
"Balance": "77349986",
"Flags": 0,
"OwnerCount": 2,
"Sequence": 9
},
"LedgerEntryType": "AccountRoot",
"LedgerIndex": "1E7E658C2D3DF91EFAE5A12573284AD6F526B8F64DD12F013C6F889EF45BEA97",
"PreviousFields": {
"OwnerCount": 3
},
"PreviousTxnID": "55C11248ACEFC2EFD59755BF88867783AC18EA078517108F942069C2FBE4CF5C",
"PreviousTxnLgrSeq": 35707468
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "2298.927882138068"
},
"Flags": 1114112,
"HighLimit": {
"currency": "USD",
"issuer": "rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun",
"value": "0"
},
"HighNode": "000000000000006B",
"LowLimit": {
"currency": "USD",
"issuer": "rpvvAvaZ7TXHkNLM8UJwCTU6yBU2jDTJ1P",
"value": "1000000000"
},
"LowNode": "0000000000000007"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "220DDA7164F3F41F3C5223FA3125D4CD368EBB4FB954B5FBFFB6D1EA6DACDD5E",
"PreviousFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "2297.927882138068"
}
},
"PreviousTxnID": "1DB2F9C67C3F42F7B8AB02BA2264254A78A201EC8A9974A1CACEFD51545B1263",
"PreviousTxnLgrSeq": 43081739
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "33403.80553244443"
},
"Flags": 1114112,
"HighLimit": {
"currency": "USD",
"issuer": "rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",
"value": "0"
},
"HighNode": "0000000000001A40",
"LowLimit": {
"currency": "USD",
"issuer": "rd5Sx93pCMgfxwBuofjen2csoFYmY8VrT",
"value": "1000000000"
},
"LowNode": "0000000000000000"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "38569918AF54B520463CFDDD00EB5ADD8768039BD94E61A5E25C387EA4FDC9A3",
"PreviousFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "33402.80752845242"
}
},
"PreviousTxnID": "38A0E82ADC2DA6C6D59929B73E9812CD1E1384E452FD23D0717EA0037E2FC9E3",
"PreviousTxnLgrSeq": 43251694
}
},
{
"ModifiedNode": {
"FinalFields": {
"Account": "rBndiPPKs9k5rjBb7HsEiqXKrz8AfUnqWq",
"BookDirectory": "4627DFFCFF8B5A265EDBD8AE8C14A52325DBFEDAF4F5C32E5B09B13AC59DBA5E",
"BookNode": "0000000000000000",
"Flags": 0,
"OwnerNode": "0000000000000000",
"Sequence": 407556,
"TakerGets": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
"value": "75.1379833998197"
},
"TakerPays": "204986996"
},
"LedgerEntryType": "Offer",
"LedgerIndex": "557BDD35E40EAFFE0AC98108A0F4AC4BB812A168CFD5B4E35475F42A60ABD9C8",
"PreviousFields": {
"TakerGets": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
"value": "76.1399833998197"
},
"TakerPays": "207720593"
},
"PreviousTxnID": "961C575073788979815F103D065CEE449D2EA6EFE8FC8C33C26EC08586925D90",
"PreviousTxnLgrSeq": 43251680
}
},
{
"ModifiedNode": {
"FinalFields": {
"Account": "r9KG7Du7aFmABzMvDnwuvPaEoMu4Eurwok",
"Balance": "8080207629",
"Flags": 0,
"OwnerCount": 6,
"Sequence": 1578765
},
"LedgerEntryType": "AccountRoot",
"LedgerIndex": "5A667CB5FBAB4143EDEFBD6EDDD4B6D19C905209C8EE16486D5D7CD6CB083E78",
"PreviousFields": {
"Balance": "8080152531",
"Sequence": 1578764
},
"PreviousTxnID": "E3CDFD288620871455634DC1E56439136AACA1DDBCE987BE12F97486AB477375",
"PreviousTxnLgrSeq": 43251694
}
},
{
"DeletedNode": {
"FinalFields": {
"Account": "r9ZoLsJHzMMJLpvsViWQ4Jgx17N8cz1997",
"BookDirectory": "A6D5D1C1CC92D56FDDFD4434FB10BD31F63EB991DA3C756653071AFD498D0000",
"BookNode": "0000000000000000",
"Flags": 0,
"OwnerNode": "0000000000000000",
"PreviousTxnID": "DB028A461E98B0398CAD65F2871B381A6D0B9A21662CA5B033438D83C518C0F2",
"PreviousTxnLgrSeq": 35686129,
"Sequence": 7,
"TakerGets": {
"currency": "EUR",
"issuer": "rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",
"value": "2.5"
},
"TakerPays": {
"currency": "ETH",
"issuer": "rcA8X3TVMST1n3CJeAdGk1RdRCHii7N2h",
"value": "0.05"
}
},
"LedgerEntryType": "Offer",
"LedgerIndex": "6AA7E5121FEB456F0A899E3D6F25D62ABB408BB67B91C9270E13714401ED72B5"
}
},
{
"ModifiedNode": {
"FinalFields": {
"Account": "rd5Sx93pCMgfxwBuofjen2csoFYmY8VrT",
"Balance": "8251028196",
"Flags": 0,
"OwnerCount": 4,
"Sequence": 274
},
"LedgerEntryType": "AccountRoot",
"LedgerIndex": "6F830A1B38F827CD4BEC946A40F1E2DF726FC22AFC3918FD621567AF17F49F3A",
"PreviousFields": {
"Balance": "8253816902"
},
"PreviousTxnID": "38A0E82ADC2DA6C6D59929B73E9812CD1E1384E452FD23D0717EA0037E2FC9E3",
"PreviousTxnLgrSeq": 43251694
}
},
{
"ModifiedNode": {
"FinalFields": {
"Account": "rd5Sx93pCMgfxwBuofjen2csoFYmY8VrT",
"BookDirectory": "79C54A4EBD69AB2EADCE313042F36092BE432423CC6A4F784E0CB6D74F25A336",
"BookNode": "0000000000000000",
"Flags": 0,
"OwnerNode": "0000000000000000",
"Sequence": 273,
"TakerGets": "8246341599",
"TakerPays": {
"currency": "USD",
"issuer": "rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",
"value": "2951.147613535471"
}
},
"LedgerEntryType": "Offer",
"LedgerIndex": "7FD1EAAE17B7D68AE640FFC56CECC3999B4F938EFFF6EA6887B6CC8BD9DBDC63",
"PreviousFields": {
"TakerGets": "8249130305",
"TakerPays": {
"currency": "USD",
"issuer": "rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",
"value": "2952.145617527486"
}
},
"PreviousTxnID": "38A0E82ADC2DA6C6D59929B73E9812CD1E1384E452FD23D0717EA0037E2FC9E3",
"PreviousTxnLgrSeq": 43251694
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "-11.68225001668339"
},
"Flags": 131072,
"HighLimit": {
"currency": "USD",
"issuer": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
"value": "5000"
},
"HighNode": "0000000000000000",
"LowLimit": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
"value": "0"
},
"LowNode": "000000000000004A"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "826CF5BFD28F3934B518D0BDF3231259CBD3FD0946E3C3CA0C97D2C75D2D1A09",
"PreviousFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "-10.68225001668339"
}
},
"PreviousTxnID": "28B271F7C27C1A267F32FFCD8B1795C5D3B1DC761AD705E3A480139AA8B61B09",
"PreviousTxnLgrSeq": 43237130
}
},
{
"ModifiedNode": {
"FinalFields": {
"Account": "rBndiPPKs9k5rjBb7HsEiqXKrz8AfUnqWq",
"Balance": "8276201534",
"Flags": 0,
"OwnerCount": 5,
"Sequence": 407558
},
"LedgerEntryType": "AccountRoot",
"LedgerIndex": "880C6FB7B9C0083211F950E4449AD45895C0EC1114B5112CE1320AC7275E3237",
"PreviousFields": {
"Balance": "8273467937"
},
"PreviousTxnID": "CB4B54942F11510A47D2731C3260429093F24016B366CBF15D8EC4B705372F02",
"PreviousTxnLgrSeq": 43251683
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "-6557.745685633666"
},
"Flags": 2228224,
"HighLimit": {
"currency": "USD",
"issuer": "rBndiPPKs9k5rjBb7HsEiqXKrz8AfUnqWq",
"value": "1000000000"
},
"HighNode": "0000000000000000",
"LowLimit": {
"currency": "USD",
"issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
"value": "0"
},
"LowNode": "0000000000000512"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "8A9FEE5192E334195314B5C162BC78F7452ADB14E06839D48943BAE05EE1967F",
"PreviousFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "-6558.747685633666"
}
},
"PreviousTxnID": "961C575073788979815F103D065CEE449D2EA6EFE8FC8C33C26EC08586925D90",
"PreviousTxnLgrSeq": 43251680
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "GCB",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "9990651675.348776"
},
"Flags": 3211264,
"HighLimit": {
"currency": "GCB",
"issuer": "rHaans8PtgwbacHvXAL3u6TG28gTAtCwr8",
"value": "0"
},
"HighNode": "0000000000000000",
"LowLimit": {
"currency": "GCB",
"issuer": "r9KG7Du7aFmABzMvDnwuvPaEoMu4Eurwok",
"value": "10000000000"
},
"LowNode": "0000000000000000"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "A2B41EE7818A5756B6A2276BDBB3CE0ED3A3B350787FD6B76E5EA1354A8F20D2",
"PreviousFields": {
"Balance": {
"currency": "GCB",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "9990651678.137482"
}
},
"PreviousTxnID": "961C575073788979815F103D065CEE449D2EA6EFE8FC8C33C26EC08586925D90",
"PreviousTxnLgrSeq": 43251680
}
},
{
"DeletedNode": {
"FinalFields": {
"ExchangeRate": "53071AFD498D0000",
"Flags": 0,
"RootIndex": "A6D5D1C1CC92D56FDDFD4434FB10BD31F63EB991DA3C756653071AFD498D0000",
"TakerGetsCurrency": "0000000000000000000000004555520000000000",
"TakerGetsIssuer": "2ADB0B3959D60A6E6991F729E1918B7163925230",
"TakerPaysCurrency": "0000000000000000000000004554480000000000",
"TakerPaysIssuer": "06CC4A6D023E68AA3499C6DE3E9F2DC52B8BA254"
},
"LedgerEntryType": "DirectoryNode",
"LedgerIndex": "A6D5D1C1CC92D56FDDFD4434FB10BD31F63EB991DA3C756653071AFD498D0000"
}
},
{
"ModifiedNode": {
"FinalFields": {
"Flags": 0,
"Owner": "r9ZoLsJHzMMJLpvsViWQ4Jgx17N8cz1997",
"RootIndex": "A83C1B192A27582EDB320EBD7A3FE58D7042CE04B67A2B3D87FDD63D871E12D7"
},
"LedgerEntryType": "DirectoryNode",
"LedgerIndex": "A83C1B192A27582EDB320EBD7A3FE58D7042CE04B67A2B3D87FDD63D871E12D7"
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "0"
},
"Flags": 65536,
"HighLimit": {
"currency": "USD",
"issuer": "rLEsXccBGNR3UPuPu2hUXPjziKC3qKSBun",
"value": "0"
},
"HighNode": "0000000000000002",
"LowLimit": {
"currency": "USD",
"issuer": "r9cZA1mLK5R5Am25ArfXFmqgNwjZgnfk59",
"value": "1"
},
"LowNode": "0000000000000000"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "C493ABA2619D0FC6355BA862BC8312DF8266FBE76AFBA9636E857F7EAC874A99",
"PreviousFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "1"
}
},
"PreviousTxnID": "28B271F7C27C1A267F32FFCD8B1795C5D3B1DC761AD705E3A480139AA8B61B09",
"PreviousTxnLgrSeq": 43237130
}
},
{
"ModifiedNode": {
"FinalFields": {
"Account": "r9KG7Du7aFmABzMvDnwuvPaEoMu4Eurwok",
"BookDirectory": "E6E8A9842EA2ED1FD5D0599343692CE1EBF977AEA751B7DC5B038D7EA4C68000",
"BookNode": "0000000000000000",
"Flags": 65536,
"OwnerNode": "0000000000000000",
"Sequence": 39018,
"TakerGets": {
"currency": "GCB",
"issuer": "rHaans8PtgwbacHvXAL3u6TG28gTAtCwr8",
"value": "9990651675.348776"
},
"TakerPays": "9990651675348776"
},
"LedgerEntryType": "Offer",
"LedgerIndex": "C939B9B2C5803DD6D89B792E72470F79CBE9F9E999691789E0B68C3808BDDD8E",
"PreviousFields": {
"TakerGets": {
"currency": "GCB",
"issuer": "rHaans8PtgwbacHvXAL3u6TG28gTAtCwr8",
"value": "9990651678.137482"
},
"TakerPays": "9990651678137482"
},
"PreviousTxnID": "961C575073788979815F103D065CEE449D2EA6EFE8FC8C33C26EC08586925D90",
"PreviousTxnLgrSeq": 43251680
}
},
{
"ModifiedNode": {
"FinalFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "2963.413395452545"
},
"Flags": 65536,
"HighLimit": {
"currency": "USD",
"issuer": "rhub8VRN55s94qWKDv6jmDy1pUykJzF3wq",
"value": "0"
},
"HighNode": "0000000000001A97",
"LowLimit": {
"currency": "USD",
"issuer": "rpvvAvaZ7TXHkNLM8UJwCTU6yBU2jDTJ1P",
"value": "0"
},
"LowNode": "0000000000000007"
},
"LedgerEntryType": "RippleState",
"LedgerIndex": "E4D1FBD5CB72A1D3EE38C21F3BCB13E454FCB469CD01C1366E0008A031E6A7FC",
"PreviousFields": {
"Balance": {
"currency": "USD",
"issuer": "rrrrrrrrrrrrrrrrrrrrBZbvji",
"value": "2964.413395452545"
}
},
"PreviousTxnID": "1DB2F9C67C3F42F7B8AB02BA2264254A78A201EC8A9974A1CACEFD51545B1263",
"PreviousTxnLgrSeq": 43081739
}
}
],
"DeliveredAmount": {
"currency": "GCB",
"issuer": "rHaans8PtgwbacHvXAL3u6TG28gTAtCwr8",
"value": "2.788706"
},
"TransactionIndex": 38,
"TransactionResult": "tesSUCCESS",
"delivered_amount": {
"currency": "GCB",
"issuer": "rHaans8PtgwbacHvXAL3u6TG28gTAtCwr8",
"value": "2.788706"
}
}

View File

@@ -0,0 +1,3 @@
# Monitor Incoming Payments with WebSocket
Use the WebSocket protocol to watch for incoming payments to an XRP Ledger address, _without_ using a client library.

View File

@@ -0,0 +1,97 @@
package main
// Connect to the XRPL Ledger using websocket and subscribe to an account
// translation from the JavaScript example to Go
// https://xrpl.org/monitor-incoming-payments-with-websocket.html
// This example uses the Gorilla websocket library to create a websocket client
// install: go get github.com/gorilla/websocket
import (
"encoding/json"
"flag"
"log"
"net/url"
"os"
"os/signal"
"time"
"github.com/gorilla/websocket"
)
// websocket address
var addr = flag.String("addr", "s.altnet.rippletest.net:51233", "http service address")
// Payload object
type message struct {
Command string `json:"command"`
Accounts []string `json:"accounts"`
}
func main() {
flag.Parse()
log.SetFlags(0)
var m message
// check for interrupts and cleanly close the connection
interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)
u := url.URL{Scheme: "ws", Host: *addr, Path: "/"}
log.Printf("connecting to %s", u.String())
// make the connection
c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
if err != nil {
log.Fatal("dial:", err)
}
// on exit close
defer c.Close()
done := make(chan struct{})
// send a subscribe command and a target XRPL account
m.Command = "subscribe"
m.Accounts = append(m.Accounts, "rUCzEr6jrEyMpjhs4wSdQdz4g8Y382NxfM")
// struct to JSON marshalling
msg, _ := json.Marshal(m)
// write to the websocket
err = c.WriteMessage(websocket.TextMessage, []byte(string(msg)))
if err != nil {
log.Println("write:", err)
return
}
// read from the websocket
_, message, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
return
}
// print the response from the XRP Ledger
log.Printf("recv: %s", message)
// handle interrupt
for {
select {
case <-done:
return
case <-interrupt:
log.Println("interrupt")
// Cleanly close the connection by sending a close message and then
// waiting (with timeout) for the server to close the connection.
err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
if err != nil {
log.Println("write close:", err)
return
}
select {
case <-done:
case <-time.After(time.Second):
}
return
}
}
}

View File

@@ -0,0 +1,3 @@
# NFToken Test Harness
Build an interface that can mint and trade non-fungible tokens (NFTs) on the NFT-Devnet.

View File

@@ -1,176 +0,0 @@
{
"overlay": {
"active": [
{
"complete_ledgers": "45498918-45500918",
"ip": "88.99.137.170",
"port": "51235",
"public_key": "AkU+AY9FWh8AXMc43fAUM69SzfAMGat0d/N+qx3kD6Dg",
"type": "out",
"uptime": 208,
"version": "rippled-1.2.1"
},
{
"complete_ledgers": "45500790-45500918",
"ip": "198.13.58.221",
"port": "51235",
"public_key": "AlQvJAlNDYtoBSaZCXM0pT5RWvdOW9QhMW5++mHswkej",
"type": "out",
"uptime": 208,
"version": "rippled-1.2.0"
},
{
"complete_ledgers": "45500662-45500918",
"ip": "52.90.101.104",
"port": "51235",
"public_key": "AkA04ujnwMn8mRyfJg4K7vzcQSOG7FHq4wUg60OQWnCY",
"type": "out",
"uptime": 209,
"version": "rippled-1.2.1"
},
{
"complete_ledgers": "45500662-45500918",
"ip": "54.202.12.93",
"port": "51235",
"public_key": "AxoekFvFYzELGty9cqiXZB+NsOWTZ0Qs9mFIw69CGb3d",
"type": "out",
"uptime": 209,
"version": "rippled-1.2.1"
},
{
"complete_ledgers": "45498918-45500918",
"ip": "173.255.240.113",
"port": "51235",
"public_key": "A4lWBMIDEQrO8Eerp9Hj3rFacbV0FiID3wTIx8Aoplq2",
"type": "out",
"uptime": 209,
"version": "rippled-1.1.0"
},
{
"complete_ledgers": "45499894-45500918",
"ip": "54.186.73.52",
"port": "51235",
"public_key": "AjikFnq0P2XybCyREr2KPiqXqJteqwPwVRVbVK+93+3o",
"type": "out",
"uptime": 209,
"version": "rippled-1.2.1"
},
{
"complete_ledgers": "45499894-45500918",
"ip": "54.186.248.91",
"port": "51235",
"public_key": "A4A4TPA17KlUjstp7fcL0qaWd4X+fvZ5MTxG5P5AggHW",
"type": "out",
"uptime": 209,
"version": "rippled-1.2.1"
},
{
"complete_ledgers": "45490918-45500918",
"ip": "162.243.114.118",
"port": "51235",
"public_key": "AufDkW4E1DOxjzRPj46Eu+AyJdsakUeJTz3xklv1kCfp",
"type": "out",
"uptime": 209,
"version": "rippled-1.2.1"
},
{
"complete_ledgers": "45498918-45500918",
"ip": "::ffff:45.56.78.201",
"port": "51235",
"public_key": "AmsXz4UUqjlz6iy8HHhZdHmBHteEBwYZLOHCHA4puCwj",
"type": "out",
"uptime": 209,
"version": "rippled-1.1.0"
},
{
"complete_ledgers": "32570-45500918",
"ip": "169.55.164.30",
"port": "51235",
"public_key": "Aw7J0CVhFKt0h6PDEpqu6t4LbPY0PsX8jCFbvSQFDOkW",
"type": "out",
"uptime": 209,
"version": "rippled-1.2.1"
}
]
},
"server": {
"build_version": "1.2.1",
"complete_ledgers": "45500881-45500888",
"io_latency_ms": 1,
"jq_trans_overflow": "0",
"last_close": {
"converge_time": 3002,
"proposers": 25
},
"load_base": 256,
"load_factor": 256,
"load_factor_fee_reference": 256,
"load_factor_server": 256,
"peer_disconnects": "0",
"peer_disconnects_resources": "0",
"peers": 10,
"pubkey_node": "n9MJZBu5HyxyEq8xPGBxXFTfT3uzdnNsvR6R1NyXxbEzt79SrZJE",
"published_ledger": 45500888,
"server_state": "full",
"server_state_duration_us": "40756665",
"state_accounting": {
"connected": {
"duration_us": "163459544",
"transitions": 1
},
"disconnected": {
"duration_us": "2539592",
"transitions": 1
},
"full": {
"duration_us": "40756665",
"transitions": 1
},
"syncing": {
"duration_us": "5071794",
"transitions": 1
},
"tracking": {
"duration_us": "1",
"transitions": 1
}
},
"time": "2019-Mar-02 01:48:50.912360",
"uptime": 213,
"validated_ledger": {
"close_time": 604806530,
"hash": "00415B0ECF1D31E8DC9A7DCB04CAF1FD47E61D4D9D047743C1508CDBD36576CE",
"reserve_base": 20000000,
"reserve_inc": 5000000,
"seq": 45500918
}
},
"unl": {
"local_static_keys": [],
"publisher_lists": [
{
"available": true,
"expiration": "2019-Mar-06 00:00:00.000000000",
"pubkey_publisher": "ED2677ABFFD1B33AC6FBC3062B71F1E8397C1505E1C42C64D11AD1B28FF73F4734",
"seq": 47,
"uri": "https://vl.ripple.com",
"version": 1
}
],
"validator_list": {
"count": 1,
"expiration": "2019-Mar-06 00:00:00.000000000",
"status": "active"
},
"validator_sites": [
{
"last_refresh_status": "accepted",
"last_refresh_time": "2019-Mar-02 01:45:19.940242379",
"next_refresh_time": "2019-Mar-02 01:50:19.568004480",
"refresh_interval_min": 5,
"uri": "https://vl.ripple.com"
}
]
},
"version": 2
}

View File

@@ -1,20 +1,5 @@
# Quickstart Samples Archive
This folder contains the [Quickstart Samples](https://github.com/XRPLF/xrpl-dev-portal/tree/master/content/_code-samples/quickstart/quickstart.zip) archive, which includes 4 iterative HTML pages as a test harness for XRPL features, with accompanying JavaScript files. The archive includes the following files:
Create a test harness for XRPL features using 4 iterative HTML pages and accompanying JavaScript files.
1.get-accounts-send--xrp.html
2.create-trustline-send-currency.html
3.mint-nfts.html
4.transfer-nfts.html
ripplex1-send-xrp.js
ripplex2-send-currency.js
ripplex3-mint-nfts.js
ripplex4-transfer-nfts.js
Get up and running with the [Quickstart Samples](https://github.com/XRPLF/xrpl-dev-portal/tree/master/content/_code-samples/quickstart/js/quickstart.zip) archive, which includes 4 iterative HTML pages as a test harness for XRPL features, with accompanying JavaScript files. For the full explanation, see the [XRPL Quickstart Tutorial](https://xrpl.org/xrpl-quickstart.html).

View File

@@ -1,5 +1,5 @@
# Require Destination Tags Sample Code
# Require Destination Tags
This code demonstrates how to configure your XRP Ledger account to require destination tags. For a detailed explanation, see <https://xrpl.org/require-destination-tags.html>.
Require incoming payments to specify a [Destination Tag](https://xrpl.org/source-and-destination-tags.html) so you know whom to credit.
The code is designed to run in-browser by loading `demo.html` and watching the console output or in Node.js. For Node.js, you must first install the dependencies using your preferred package manager (such as `yarn` or `npm`).
Examples from the [Require Destination Tags tutorial](https://xrpl.org/require-destination-tags.html).

View File

@@ -0,0 +1,5 @@
# Require Destination Tags Sample Code
This code demonstrates how to configure your XRP Ledger account to require destination tags. For a detailed explanation, see <https://xrpl.org/require-destination-tags.html>.
The code is designed to run in-browser by loading `demo.html` and watching the console output or in Node.js. For Node.js, you must first install the dependencies using your preferred package manager (such as `yarn` or `npm`).

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,5 @@
# Secure Signing
Sign transactions from the security of your own machine.
For more information and more options, see [Set Up Secure Signing](https://xrpl.org/set-up-secure-signing.html).

View File

@@ -0,0 +1,5 @@
# Send XRP
Send a direct XRP payment to another account in the XRP Ledger.
Examples from the interactive [Send XRP tutorial](https://xrpl.org/send-xrp.html).

View File

@@ -1,8 +1,11 @@
# Submit and Verify
Example JavaScript code using ripple-lib to submit a signed transaction blob and wait until it has a final result.
Submit a signed transaction blob and wait until it has a final result.
Example usage:
- [submit-and-verify.js](js/submit-and-verify.js): ripple-lib 1.x version.
- [submit-and-verify2.js](js/submit-and-verify2.js): xrpl.js 2.x version. Unlike the submitAndWait() method built into xrpl.js, this checks the server's available history and returns a different code when the transaction's status is unknowable with the server's available history versus if the transaction was _definitely_ not confirmed by consensus.
Example usage (ripple-lib 1.x):
```js
// example testnet creds. Don't use for real

View File

@@ -0,0 +1,5 @@
# Transaction Serialization
Convert transactions and other XRPL data from JSON to their canonical binary format for signing or cryptographic verification. (This reference implementation is equivalent to the ones included in most client libraries.)
For a detailed explanation, see [Serialization](https://xrpl.org/serialization.html).

View File

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -0,0 +1,5 @@
# Tickets
Create a Ticket and use it to send a transaction out of the usual Sequence order.
For more context, see the interactive [Use Tickets tutorial](https://xrpl.org/use-tickets.html).

View File

@@ -1,150 +0,0 @@
{
"sequence": 60,
"expiration": 644371200,
"validators": [
{
"validation_public_key": "ED45E80A04D79CB9DF00AEBD86DCDC1686D6419EA9E5E0E71F1A817E08B5076A55",
"manifest": "JAAAAAFxIe1F6AoE15y53wCuvYbc3BaG1kGeqeXg5x8agX4ItQdqVXMhAxZo157pcB9de6Smk7hoK3wNCAr4aFZtfAPi7CE4mNJldkcwRQIhALlVjXCfiy/mtXBWsNt77t4jKcNEBpRV8zv+SpU5lCh0AiBa8vo8xxpviYlf4zdG+nQhB2OgfkQZZPMHOt7CaXzXgXASQL8O5p083mg4KKL8uZfMaUqdgzuJ0Gta1lyUWPctTPCxY135XwK+nJAdFsIUFNJ9MPjnpCmSjYVzVa6M5/nAcAI="
},
{
"validation_public_key": "EDD8C88642795CE69C5B780E01702C370F9507D0B64433F17EFE70F2637A40ADB7",
"manifest": "JAAAAAFxIe3YyIZCeVzmnFt4DgFwLDcPlQfQtkQz8X7+cPJjekCtt3MhAnFfr+r9BXdsXE/cBlJMyd/XsO1A5XEYCctrsvLEX+DmdkcwRQIhANRcRMg9SAXoaOvHDZ2av9RzEaZaVENfQiVgsi+Ox3F0AiB2snSIOm6c4/inbtU0UmWLQTzuwkOdUFPIB8Ax8dmGuHASQMUIfXMj96kcFTSJnMFC/mW/AQ8bKXkFrrk0CUTFFKweEjTq+STrFi6qLL2MT7nveGxsXBCgztjc0qGas9KFWgM="
},
{
"validation_public_key": "EDBDEB901F7C75D0E20C6C42AF03BE0DA40377AF1939A18B3CB3679661DD5F9F74",
"manifest": "JAAAAAFxIe2965AffHXQ4gxsQq8Dvg2kA3evGTmhizyzZ5Zh3V+fdHMhAg3cyKNPMPqKgR7kIi7c/8GL/YgdBtg4mSAWvwmaevVGdkYwRAIgWzG8GqYg3YpwDs8xXa9XqLHss76KT2uAHRhUXFVUqCQCIG2EvbFKnxezRd9cpPHSt32HXK+P4+aL3p2+vqlCxRR9cBJAboXTmYTayocA3zf9dWEXtyaeOGC1k5WdYURzPleevvalR4xVoXzs38iGPxFr/pA9nL+M4duu0GKCHlVir+fBAg=="
},
{
"validation_public_key": "EDA17871E72B0C570AC4345C60CF02AFBBB740A631B7AD0E1E573216574D9AEA02",
"manifest": "JAAAAAFxIe2heHHnKwxXCsQ0XGDPAq+7t0CmMbetDh5XMhZXTZrqAnMhAojyuzgtreQkxQj8prHxOsbDcF5fu4XXb0KxEL/Pq5HhdkcwRQIhANfPDLZP47aCWwt5kBnp75BuuCgp9c4BfJPd66SFCw61AiAJvegBvvPIrec+XOSzKRfi5uuXWxtl9Eyr2aPBYXvbRHASQMULYEo7beRfoUCnjk1sTYyY91tLIGLgnnaWXhUm80+zs5IGegk8qijKAtBOMuBC71lAB4KhJc+dB2rpMOFc5gw="
},
{
"validation_public_key": "EDF46EE27AD0E1A714AFECDA816EAB7114614FCB92D0CB4D97B6A88ED43434AFC9",
"manifest": "JAAAAAFxIe30buJ60OGnFK/s2oFuq3EUYU/LktDLTZe2qI7UNDSvyXMhAw0ATWjVTt4FfeKO7kv6fFgd/go2+d5BSyUcURmRWnTtdkcwRQIhAMwOgDec7QYYNngspg90wEvVbsoh2ux14RPTw+GHaXNlAiALgfEsz+AF4eyX/Y5i44VrFjFFIMWUfOZaQJtsxteM1XASQLOaF0t2ZpqVKd8JESQVY+zU567iAAG2amTPZx95875S9A6Pl+kH5TGHMAeWjgWSqfh3m2HBJX7NIcXb98vy9AA="
},
{
"validation_public_key": "ED6E4C41E59FFBEB51726E54468502FE6437238FA78EA51634E7BF0D09171AEE8F",
"manifest": "JAAAAAFxIe1uTEHln/vrUXJuVEaFAv5kNyOPp46lFjTnvw0JFxruj3MhAuztGWb/Oi1/V5m5dujWr9HmbKRyK4XYk+kmuFPSgAFrdkYwRAIgfQ+BgXX6QblZy4H05o7GPSIwqS7QQRUW7dqF54IAiiMCIH4XfLw956iEaoxZOk7Kctin2X9hMfaLN7wys9yAUFoZcBJAueEi84XR3Ll1GLJWanW1g1MdUj/0PAxJbw6EEQRuG3zdnuRHNXld6UZAbIkVcP0ztfqulBzjbcsLDOKFEicSBg=="
},
{
"validation_public_key": "EDB6FC8E803EE8EDC2793F1EC917B2EE41D35255618DEB91D3F9B1FC89B75D4539",
"manifest": "JAAAAAFxIe22/I6APujtwnk/HskXsu5B01JVYY3rkdP5sfyJt11FOXMhA8VdvHFyScByQGTYNGeOvB0+67gWaqefcfvRk5+KwgV1dkYwRAIgZFulO/AiMoczng6i/4BkfzT7j9lxF4PP1ufgrOQaJ8sCIBX/E8Zbpn7tWqgAyNyWpVPkhFmaUMqEry8WoUT1fdGQcBJAv51RqJxgg/VrnrZwiLK2Dc0CKbiLPO5HJ4ZMsjdPT2gRc97rWkAXuV2L6PNFO59xyuoaZmSMlZYvqSGPpfF7Bw=="
},
{
"validation_public_key": "ED691303992FEC64E6BC4BACD36AE6E5AEDC23F2861B6D8EFB9FD77EE3EADE3435",
"manifest": "JAAAAAFxIe1pEwOZL+xk5rxLrNNq5uWu3CPyhhttjvuf137j6t40NXMhAi2AXJQgo/JuW3r7f/6CcVsGN1YmIj11GiIESHBnQSk8dkcwRQIhANCDEQymrd6veT3ouacF6fhBr5wLw3GmXg1rMCLVvBzZAiA8uWQ+tqd46WmfBexjSBQ2Jd6UAGdrHvjcCQ2ZgSooCnASQFkHl+D7/U3WByYP384+pcFDf2Gi4WIRHVTo58cqdk5CDiwc1T0rDoLhmo41a3f+dsftfwR4aMmwFcPXLnrjrAI="
},
{
"validation_public_key": "EDAD16667F0185DDBB7FA65B22F4B7D310BF5C3E2D9B823FB06A3A41AF8AC83BC1",
"manifest": "JAAAAAFxIe2tFmZ/AYXdu3+mWyL0t9MQv1w+LZuCP7BqOkGvisg7wXMhAqweE3PIS3E44KhMqKjKtbkBe8H8GbiuoAXAYDRoVRHodkYwRAIgagGkXtowUybdltKojv0lvvflrlQ9IRnPOjekF60iHzgCICg6ZocIMzkUuvO91BEormIWmX4G/MGT2zro6I/PvB8XcBJAcJLXkt/w/kcwEvNiZmi2i2nMn1wiP3LS9NJjBPju8KFLAMg0O9ydQT67U/ALYOeTPTO2/i2Yw9OSlibtqhgzDA=="
},
{
"validation_public_key": "EDC245027A52EE5318095598EC3AB65FF4A3B9F9428E10B2F3C6F39DE15A15C90A",
"manifest": "JAAAAAFxIe3CRQJ6Uu5TGAlVmOw6tl/0o7n5Qo4QsvPG853hWhXJCnMhA/8/9rKUdA61j/fIEP/cqLpxBlmIhP2rg1d7NaEPyKV+dkcwRQIhAIxE0M/FJ50vfZW6fPpy4yCZumY9n0obrOojUkjm55a0AiBj56O0MpopGoY9HxC/+4wNO36Ho7E9CQeHsnKreDdsAXASQIYUd81jbiVUlET4dGoG2p+cf+2GqEXX5fJMSSyX/qe0XfR4cO+4qlgmjMQdCRDBWABHVvdN/yZyi/rL2c+WrQc="
},
{
"validation_public_key": "ED4246AA3AE9D29863944800CCA91829E4447498A20CD9C3973A6B59346C75AB95",
"manifest": "JAAAAAFxIe1CRqo66dKYY5RIAMypGCnkRHSYogzZw5c6a1k0bHWrlXMhAkm1lz0c8QXWfJ9b1vB72dLabw8wYId8MtnpsHHBEC8pdkYwRAIgQlb6HJ53hsTAfVid+AOdBVvMF7rahIKNLBHUgn52zBECIGLUqFu8a1AAHRJcVonKYEnmhJwbCXLn+je7na1WD1/ocBJAE4vfvrGSmZC2uAUGmM5dIBtoSgEUey+2VleDYEsce94txYcjR8Z7QLNaliD8w/bD5/hvYQ8meV1Wg1jJFNe0CA=="
},
{
"validation_public_key": "ED2C1468B4A11D281F93EF337C95E4A08DF0000FDEFB6D0EA9BC05FBD5D61A1F5A",
"manifest": "JAAAAAFxIe0sFGi0oR0oH5PvM3yV5KCN8AAP3vttDqm8BfvV1hofWnMhAkMUmCD2aPmgFDDRmimvSicSIScw6YNr42Dw4RAdwrOAdkcwRQIhAJFOHMg6qTG8v60dhrenYYk6cwOaRXq0RNmLjyyCiz5lAiAdU0YkDUJQhnN8Ry8s+6zTJLiNLbtM8oO/cLnurVpRM3ASQGALarHAsJkSZQtGdM2AaR/joFK/jhDU57+l+RSYjri/ydE20DaKanwkMEoVlBTg7lX4hYjEnmkqo73wIthLOAQ="
},
{
"validation_public_key": "EDA54C85F91219FD259134B6B126AD64AE7204B81DD4052510657E1A5697246AD2",
"manifest": "JAAAAHlxIe2lTIX5Ehn9JZE0trEmrWSucgS4HdQFJRBlfhpWlyRq0nMhAuAm/kLuTHmcOaDruJBjKjWOp1UtGuO8CICtRp4vo4HGdkcwRQIhAP1SPcKuMlGGDe5rcQAf1x/BmnVtBIG4Hv9US5b/GyZCAiA+03cZu9+EBqSZueF5lAUSPY/HRfL7pqxwn89fS4AFA3ASQJq+QRUP+aXB2iMxZrEajySxGs7CNpucyptWV0bnaq7ilnfUCvMlfszq5mV0rahB89C2zAnf7FjH0Cx0BML29QA="
},
{
"validation_public_key": "ED9AE4F5887BA029EB7C0884486D23CF281975F773F44BD213054219882C411CC7",
"manifest": "JAAAAAFxIe2a5PWIe6Ap63wIhEhtI88oGXX3c/RL0hMFQhmILEEcx3MhAmG2zgv8FBZsZJU8aPapwo9cIqQv4/MSS1oVA5eVMiwLdkYwRAIgF+LOe4eY0gp9ttqh2gnv+z75OqLyOQMpGPALgm+NtOsCICDXBZVPtprmBDkBJkPFSnE55D9eKYRH8z/iY1EtpNplcBJAADEWGVT80Owhd1lh2JsU/oZlmeNF5WN7YvlB8llExaRKEVC+GW9Wg+iNIQ3rmV7P8aNaVuaabG00fOgkgzNhDw=="
},
{
"validation_public_key": "EDA8D29F40CEB28995617641A3BC42692E1DE883214F612FBB62087A148E5F6F9A",
"manifest": "JAAAAAFxIe2o0p9AzrKJlWF2QaO8QmkuHeiDIU9hL7tiCHoUjl9vmnMhAnYnP7Eg6VgNnEUTRE29d64jQT/iBcWTQtNrUzyD6MJ+dkcwRQIhAOEsV5anTkloSmTZRbimMyBKqHoJYXcBBe8lLiPYC7mUAiAz2aNOpfQ/1LycWloIMvdhxzinq5X7Uas/uOSb9wh8d3ASQLVkfpW/GO6wdT6AuuSJ56TtM343pDNH+iSzxltIfdrPiUxT5rf4k21lQQuPClXm9+SfKrCiUXZK7dj0/GWTYQg="
},
{
"validation_public_key": "ED38B0288EA240B4CDEC18A1A6289EB49007E4EBC0DE944803EB7EF141C5664073",
"manifest": "JAAAAAFxIe04sCiOokC0zewYoaYonrSQB+TrwN6USAPrfvFBxWZAc3MhAgOKcvIuchalrZw/glTuOxV3IOCcporxMB7JqAVupk1edkcwRQIhAOvRzpe+IYZK1MyInIQZ87JvP2J8SIXCXZMPBCdITBamAiASavJXi9pws8rDDJSxhGMlmE7zI5bSA8ivtRC9Lgq+UXASQDl3eoqLID+ETJNM+zbMuvwvcHEIxeBZkZ9fp5jJv6OCTPwlj4TJSuy1avEWqUYS2riv5Dvl2haFUoCHf4yawAA="
},
{
"validation_public_key": "EDEE10DC36ACD995C8E0E86E3CD2FBF8301A4AC2B8847B61A1935DE4973B407C0E",
"manifest": "JAAAAAFxIe3uENw2rNmVyODobjzS+/gwGkrCuIR7YaGTXeSXO0B8DnMhAmX0vb7j+lgBjFjbN9RlA86J7AO2Vn6HLquO3aisK4mwdkYwRAIgfxBLn7i4jg/di0U25q6kIbVfTzqbA0SCpQ0I57TOFkcCIFMtJQpENjB2K2EmvBHPvNcwuSPc3vsEeqE2rNJ/cT5DcBJAf68XPFu5RjCeLgpFJM7PKFLgoV8e1nxO5ewjq9Q+TAEGnFyS0IOwf6pOOtIVMdVeXu1v6p4fhXQkdihHt1x6Ag=="
},
{
"validation_public_key": "ED583ECD06C3B7369980E65C78C440A529300F557ED81256283F7DD5AA3513A334",
"manifest": "JAAAAAFxIe1YPs0Gw7c2mYDmXHjEQKUpMA9VftgSVig/fdWqNROjNHMhAyuUnzZZ1n2/GaTmE1m7H/v9YlZyDEwHY3gSHUA3ICL9dkYwRAIgHx2PHvidoN+5yG9WeAS2k7nwIM8ajxQW6wjvt8kBenACIDNxQPQkDyDJH9seS5C62mAarQmgiN89YS3jhNtnvEIqcBJAj7Jh0Kac+aJdpoepu/+eJKnnFQ7YByZB8eMZ+SS1zLhE+lip/49qqVNcpAxEqfaGtxJzoDDD1/QbuU7NOSPkCg=="
},
{
"validation_public_key": "ED95C5172B2AD7D39434EEBC436B65B3BB7E58D5C1CEFC820B6972ACAD776E286A",
"manifest": "JAAAAAFxIe2VxRcrKtfTlDTuvENrZbO7fljVwc78ggtpcqytd24oanMhAiqcRde3MQZ075fa4ZNNyRaYJGMdBNkBnn3bQrKseBDQdkYwRAIgU+LfcE71DPVrO+KtUBjQ9D2u0k/Pr7lukO1nPRj6hSACIDNLYC/JFgobCsIa0BGw+6bUnOw9meU3FdXgR7Q7SoqJcBJAXQakOoQnPp3pcLL7zdKCPUX4b+/FC9Unhqp+O9xQFnRaCWVGmk5MJOIMs4WOQdpM1j3OgSsABmRuCXYvwo/nDw=="
},
{
"validation_public_key": "ED91EA1E0845DCA1F2E1963BA0D45F30C943DF28F3BFB0A10174365137C7F6E9C4",
"manifest": "JAAAAAFxIe2R6h4IRdyh8uGWO6DUXzDJQ98o87+woQF0NlE3x/bpxHMhAy0y9dGPsh3zyCOznqVlLDQ38u4K2G/6wgvJDMUuQg+sdkYwRAIgNEZc1LDaxyIUxrJDP0euBtNjIQnrZjRPOtlVgGymcD0CIAXHIkub5DVkmoKdOPGYPZPNs7qjCTVG/NgL4IhZCcdpcBJAqnAtvvQcyaUf9aW6AsE2szW6hlqDiJ5SBri9i0BAlUVGQCFugQpp1kZJ8MrReR5lU4N0Wfu3W8whCIJ4zYSpCw=="
},
{
"validation_public_key": "ED30604DA11EBAB73C4A2830F014D6F84BD4B1C260BB1A4E2F9063C1A7B4384A96",
"manifest": "JAAAAAFxIe0wYE2hHrq3PEooMPAU1vhL1LHCYLsaTi+QY8GntDhKlnMhA7mC0y8JZUmLThVLWXk1G3yoBhvC2DWpkPQ7nSeZZIaVdkcwRQIhAO8aT3z7GFPNyfICuVKO0axMdm63itv9x04DEA9LIBe7AiA61aG/rh/7V9SriNqqTVnJg7jQ/ZoXSfUZNr4XHcGtIHASQOX/AIJXEeeO0zI+ysNcpMIdX7iFuse+ox09SrfFy8KsYb6e3TA+TVUXNu/OZKRv+VZlwO79+d/RH0pzWZBqegM="
},
{
"validation_public_key": "ED8252C2F91523126EEF9A21964C7E487A10D6D63D459139700DBC70D9F7BAD542",
"manifest": "JAAAAAFxIe2CUsL5FSMSbu+aIZZMfkh6ENbWPUWROXANvHDZ97rVQnMhA41LoGG44d9TZqT0bakr9dpFCqL+fgXCINmAYCeXf4acdkYwRAIgdMgcVlVPIffb1ITBaWjSJ+Asy7P98GO9WDmiBm42epsCIADSZmxluN/NPn7nwKZ6G3xfeF8lH5ecItPWNrWWOuW4cBJAtstv8IUUMnTZdUzjm8YQDAGqooWCik5ttjYmk46qq2TsWRTIL73Kp9VLHbGrEvNdkn5YLBmdwfTwhWmBriQvAw=="
},
{
"validation_public_key": "ED63CF929BE85B266A66584B3FE2EB97FC248203F0271DC9C833563E60418E7818",
"manifest": "JAAAAANxIe1jz5Kb6FsmamZYSz/i65f8JIID8CcdycgzVj5gQY54GHMhA46ynkiiAAEUGZgMrCHUD6h1zWEbxiA91M16I54uxnO/dkYwRAIgEUJiZ2yqot1XrVU6M/claeRAK5Tx0BGTtykon8JIJCkCIF70vgQpeXpV0v2eqPT8DOqcp1N2CxgBkDn/ylsqOBilcBJAFQJx4jfZaD11nw02L74IYzVtyaRNKVCr4kdHNoyLdmWL9xWCCTwVhUf8nh2YfIpJcFnFp0jaSPUQr6Gwltq9AA=="
},
{
"validation_public_key": "ED0AD0609BCC0226962BE6A1F1E3976D4984CEAAD3B928A03DCA28EB7BB7A12377",
"manifest": "JAAAAAFxIe0K0GCbzAImlivmofHjl21JhM6q07kooD3KKOt7t6Ejd3MhA13G4BaLsQc0ZuqMWdl2mIVLSVORKg8EPU338wIDtKpJdkYwRAIgEO5sVMxiiZ02E5PRPhTOXRpDSJdU4WhwWZ1LcAIhDNECICnhUtqDwvlWDN2G1a9CxBWsXDyz/tHdpl++CpmR4bOFcBJA8cKga06ByHoATejVsVEUF7LK1PyOS0DRXoLr5YsNPbF+nq+uxi7yBMbDQU+2PbCERxYncpeZPD2V2m6xD8uCAg=="
},
{
"validation_public_key": "EDC090980ECAAB37CBE52E880236EC57F732B7DBB7C7BB9A3768D3A6E7184A795E",
"manifest": "JAAAAAFxIe3AkJgOyqs3y+UuiAI27Ff3Mrfbt8e7mjdo06bnGEp5XnMhAhRmvCZmWZXlwShVE9qXs2AVCvhVuA/WGYkTX/vVGBGwdkYwRAIgGnYpIGufURojN2cTXakAM7Vwa0GR7o3osdVlZShroXQCIH9R/Lx1v9rdb4YY2n5nrxdnhSSof3U6V/wIHJmeao5ucBJA9D1iAMo7YFCpb245N3Czc0L1R2Xac0YwQ6XdGT+cZ7yw2n8JbdC3hH8Xu9OUqc867Ee6JmlXtyDHzBdY/hdJCQ=="
},
{
"validation_public_key": "EDC1897CE83B6DCF58858574EC9FE027D4B1538A0F20823800A5529E121E87A93B",
"manifest": "JAAAAAFxIe3BiXzoO23PWIWFdOyf4CfUsVOKDyCCOAClUp4SHoepO3MhAyzghN7DPPb6DQk+C8jD6VxnAtvrMP3wb4dUWvikOyb6dkcwRQIhANmpvnJnNABmsVVTgZGG9/gJ2gO10+reIvj1RmCN27kuAiBqG5TMjHKdSHDo2kRX/yIc6ZbzMxCeQNg0p/VQYHB70HASQEEWeQ3EJKifr/rFQRGYTATKtK/KmSyR246DAYGDkMwmqZ9MUhjAalWPdSks+q8E8lmxnkElmJ9IRL80efslCAQ="
},
{
"validation_public_key": "ED5E82276BCC278499E4285399789F5A93196166B552957997A61599D4F8613959",
"manifest": "JAAAAAFxIe1egidrzCeEmeQoU5l4n1qTGWFmtVKVeZemFZnU+GE5WXMhAw2OjN7E3AfWx4sAN7k+8SdHypV6PKv/LdnCt1OiCf+RdkYwRAIgf5hIqlhCsDXUmJqdrU6CaM+tl34yqRo7QzOYB2JEyo8CIFfMBva7js/PM9yyJo95jxE+VTpWCxXd9o7c7qjyituTcBJA+biCZchkbricoQKMSbtUFRih10Khob4lva+SMz6ldA8c5wXWUnOlqZ7WWyG1y+FaM7CzDAx4iEg3KMQm44nUCQ=="
},
{
"validation_public_key": "EDF10074F5FBBB975A8EA8E9C42306854E6A49C71B7D33B0293AB1830FECF2C400",
"manifest": "JAAAAAFxIe3xAHT1+7uXWo6o6cQjBoVOaknHG30zsCk6sYMP7PLEAHMhA/50gU8eWLqwVPKzk0Nj5bAc+xJ1mFevzP4eN7GIFs53dkcwRQIhANeYigL33Z1iQ4yq++CaiSy3AHLwE9yuSJ+2z84s9ypJAiBZPg/KKOXZpusZwXhrHvwOzWDSeDJ0W/V1iEQnMhw+vHASQLW0r5r+nG+x+F5b3Y8aAJQhkX1CBOhgFFeuAmCvUO2f6vlEx455hDtJqI8N84a0Kg5Y+gmzpsESNFXEJBH1xwE="
},
{
"validation_public_key": "EDFE65FB385B6BB16951153D2A0F32BD6D8CC4532C87BB3E1900913A7BE34F5EF7",
"manifest": "JAAAAAFxIe3+Zfs4W2uxaVEVPSoPMr1tjMRTLIe7PhkAkTp7409e93MhA31gXDB4wVF06XPQM3fScxfWHkoRE5kggC/SEwXCYSHDdkcwRQIhAMSEv7ka1d70zTe3ctwBb9d+hx+wZjveZbcVuphfzRg/AiBOjyeTN0fvbjmur+lV/ovG1A9Zfkn7HmO7nbrFiorLwXASQLAHLgKpleHyaSQv0O4dCI0rSuvPR4Svw9FkMCorVZKG7ywAmKN2hRW8UraUfqm2HpQCq4AASgRoR2/YhBQCEgo="
},
{
"validation_public_key": "ED58F6770DB5DD77E59D28CB650EC3816E2FC95021BB56E720C9A12DA79C58A3AB",
"manifest": "JAAAAAFxIe1Y9ncNtd135Z0oy2UOw4FuL8lQIbtW5yDJoS2nnFijq3MhA+QZVFEvfIH4IlclPsVfTcaKgR3XNrXNk97GxtKYBR3jdkcwRQIhAOgnllsWVvhWHfvVOsdXGsQjrRZp2buWISeq6GSYiz7FAiAcCO8OmHivZjwAl+dN1J/9FJ+cElxcpr/M+CaHkUBt6HASQDTO+yf+h1naBQgQmY32ajTvpPLsp4gQUxaYlTl0vdkeXHyAntECezgoxWBlo9IrEzBFzWOfXFTx4bwTrEMuBAk="
},
{
"validation_public_key": "ED5784A43AA84B5BDAFD0AFEF64ADA5583A3129182C6A7464950FD6BF2D9FAE5B0",
"manifest": "JAAAAAFxIe1XhKQ6qEtb2v0K/vZK2lWDoxKRgsanRklQ/Wvy2frlsHMhArdbSEl/Oha4I5VI0qVxmc1zBWoRb5YnutciOC0l+OYddkcwRQIhAIqluIgtzGJZJG9s7t2558ipnGfgXOZxOBN+VXey4iSmAiAWJzzanXjXImMB/VtHHrqs1V4xnlg8uF+y7Ms+1vMGZnASQCZYnNR3aSlwdYpRkP5v1V9a5BesJUZD6UJ1nMr5b5VoOml+DjVtDUZysrCIx00a+gLz+th86gTey7UnCrqgQgk="
},
{
"validation_public_key": "ED75940EC09130F9C553D8AF0FE354A112CC27251472AF1A90917597489192135F",
"manifest": "JAAAAAFxIe11lA7AkTD5xVPYrw/jVKESzCclFHKvGpCRdZdIkZITX3MhAozHf//RpGgNExPNP8S2HDLH5NQErqjPSZy99Kn8G31mdkcwRQIhAKJW0DjI1xeTYBlDE9qY9t32suLV3hsQo0SW4cvGm0DcAiA7AKg7SSHAVnJnG7HkJU6jxTj9qPRg6/o6lAxyWFRsenASQPP5nJBFTluxZ1CJ+MlHAQXOn4HjReHkNfD0JF2EFkKXRcd/1HrnE9uGPt31EWWhPU1+s6tsbIx7wy9mq5XcHQ0="
},
{
"validation_public_key": "EDF4CC5AB784DC569D9BBD46982B1CF80A79BB4C0AD1CA1270F1D8B5EA4A5B950B",
"manifest": "JAAAAAFxIe30zFq3hNxWnZu9RpgrHPgKebtMCtHKEnDx2LXqSluVC3MhAoH3kciMcuyYxaV7xox0PG/DKuzF1T7u/RmUtGkBf0UNdkcwRQIhALnQ0rBlGS/PrNNVKjkhyJnQqzelRztgA4kC0xewQhXoAiBYvLfFq14UNYVy8ffGec0VRcTm7ZZR1qx+jDo4CFPyyHASQDW7A9Nulxybe/IK5QhXBp71uGi7FQ2RCww/WvK4kVidmxlTh+MjHIOid8VxNmATmDfpgXMi8R8ZC6TSVEA3ygI="
},
{
"validation_public_key": "EDCFE65121E39A2955F04D6D784E3B021791E88D1393DA4AFAB89F99A929A72924",
"manifest": "JAAAAAFxIe3P5lEh45opVfBNbXhOOwIXkeiNE5PaSvq4n5mpKacpJHMhAltq4c6NJj0hvl47bShHCNZCda5jKSb5Q8UKoHagJKVndkYwRAIgKNsTb54BtOL/nKTuLqFJ2RQTLV1QuVJpBCjmCgiW0csCIC/49bK6J420PF3lLRULAiJctYGAIavqxLSsHDki+KvfcBJAkcOaWwuQ0DpyV/zjBfcdjLYC5YbMy0NKGn+8Iy1gLcXUkYtU40hW78wcJzYPZPSfSP+JBVTVsCXRs8wrdqsWAw=="
},
{
"validation_public_key": "EDA5AAE0DB134B809F8D664888F7EC4FCE98DC4D00B33301032424941C16C2F0F7",
"manifest": "JAAAAANxIe2lquDbE0uAn41mSIj37E/OmNxNALMzAQMkJJQcFsLw93MhAgbEaxgObrbcqWdV+e73GPAXIShqbsqfKHM9Yzvke3DUdkcwRQIhANcZkOl7HGXO1vp9Zbu0AecBgsfTjVEMn0ADiIxGrsisAiAsyvbeMaiUoaflFDJPVZQjZ0eV3eVGlzjQHhg9vJv4MXASQD+zcPFXd+7umjy/G6BNRDHEUmC5Cq2ypAYbMxTszDB948dj93OoLSNXBUAov2lndDzuyJCXXtXAF0Q8Fj/6sQI="
},
{
"validation_public_key": "ED760E58A14E57C91F74C6864E279C0000F3ED2D868BA6812197DF1348D3F7A4D7",
"manifest": "JAAAAAJxIe12DlihTlfJH3TGhk4nnAAA8+0thoumgSGX3xNI0/ek13MhApXxQyFRip+9NdEt7qedWZfLF6vOmBoYR/Xar232RP3rdkcwRQIhAMBhxraztWb7erMijAarunSRk/pJqr/d0Cumg+OYuT3+AiAUxqvumErWO0n+KSY6PA6o9n5nBk5z33E1AQdBlpd7FXASQDK4ooXG4fhGxLB7i9h43dnzUid29+3kD/vTUir3T0cjC2+FLLzZj8A085gC1EBicfLjduvjxhCV1RpM3eJVGQE="
}
]
}

File diff suppressed because one or more lines are too long