mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-22 12:45:50 +00:00
Merge branch 'master' into mvadari-patch-1
This commit is contained in:
@@ -11,7 +11,7 @@ import moment from "moment-timezone";
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
|
|
||||||
const alertBanner = {
|
const alertBanner = {
|
||||||
show: true,
|
show: false,
|
||||||
message: "APEX 2025",
|
message: "APEX 2025",
|
||||||
button: "REGISTER",
|
button: "REGISTER",
|
||||||
link: "https://www.xrpledgerapex.com/?utm_source=xrplwebsite&utm_medium=direct&utm_campaign=xrpl-event-ho-xrplapex-glb-2025-q1_xrplwebsite_ari_arp_bf_rsvp&utm_content=cta_btn_english_pencilbanner"
|
link: "https://www.xrpledgerapex.com/?utm_source=xrplwebsite&utm_medium=direct&utm_campaign=xrpl-event-ho-xrplapex-glb-2025-q1_xrplwebsite_ari_arp_bf_rsvp&utm_content=cta_btn_english_pencilbanner"
|
||||||
|
|||||||
@@ -37,7 +37,11 @@ const args = parseArgs(process.argv.slice(2), {
|
|||||||
|
|
||||||
function _pretty(message, color) {
|
function _pretty(message, color) {
|
||||||
if (!args.raw) {
|
if (!args.raw) {
|
||||||
console.log(color, message)
|
if (color) {
|
||||||
|
console.log(color,message)
|
||||||
|
} else {
|
||||||
|
console.log(message)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,4 +64,4 @@ if (args.json) {
|
|||||||
} else {
|
} else {
|
||||||
rawJson = fs.readFileSync(args.filename, 'utf8')
|
rawJson = fs.readFileSync(args.filename, 'utf8')
|
||||||
main(rawJson, args.verbose)
|
main(rawJson, args.verbose)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,10 +7,9 @@
|
|||||||
"big-integer": "^1.6.52",
|
"big-integer": "^1.6.52",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"decimal.js": "^10.4.3",
|
"decimal.js": "^10.4.3",
|
||||||
"fs": "^0.0.1-security",
|
|
||||||
"minimist": "^1.2.7",
|
"minimist": "^1.2.7",
|
||||||
"ripple-address-codec": "^5.0.0",
|
"ripple-address-codec": "^5.0.0",
|
||||||
"xrpl": "^4.0.0"
|
"xrpl": "^4.2.5"
|
||||||
},
|
},
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ you can use to verify the behavior of the transaction serialization code.
|
|||||||
For example (starting from the `tx-serialization/js/` dir above this one):
|
For example (starting from the `tx-serialization/js/` dir above this one):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ node index.js -f test-cases/tx2.json | \
|
$ node index.js -rf test-cases/tx2.json | \
|
||||||
diff - test-cases/tx2-binary.txt
|
diff - test-cases/tx2-binary.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ CDC63E1DEE7FE3744630440220143759437C04F7B61F012563AFE90D8DAFC46E86035E1D965A9CED
|
|||||||
For a friendlier display, you could pipe the output of the serializer to a file and use a visual tool like [Meld](http://meldmerge.org/) that shows intra-line differences:
|
For a friendlier display, you could pipe the output of the serializer to a file and use a visual tool like [Meld](http://meldmerge.org/) that shows intra-line differences:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ cat test-cases/tx1.json | sed -e 's/"Fee": "10"/"Fee": "100"/' | node index.js --stdin > /tmp/tx1-modified.txt && meld /tmp/tx1-modified.txt test-cases/tx1-binary.txt
|
$ cat test-cases/tx1.json | sed -e 's/"Fee": "10"/"Fee": "100"/' | node index.js --raw --stdin > /tmp/tx1-modified.txt && meld /tmp/tx1-modified.txt test-cases/tx1-binary.txt
|
||||||
```
|
```
|
||||||
|
|
||||||

|

|
||||||
|
|||||||
@@ -92,7 +92,7 @@ class TxSerializer {
|
|||||||
_decodeAddress(address) {
|
_decodeAddress(address) {
|
||||||
const decoded = codec.decodeChecked(address)
|
const decoded = codec.decodeChecked(address)
|
||||||
if (decoded[0] === 0 && decoded.length === 21) {
|
if (decoded[0] === 0 && decoded.length === 21) {
|
||||||
return decoded.slice(1)
|
return Buffer.from(decoded.slice(1))
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Error("Not an AccountID!")
|
throw new Error("Not an AccountID!")
|
||||||
@@ -161,7 +161,7 @@ class TxSerializer {
|
|||||||
const byte2 = this.uint8ToBytes(typeCode)
|
const byte2 = this.uint8ToBytes(typeCode)
|
||||||
const byte3 = this.uint8ToBytes(fieldCode)
|
const byte3 = this.uint8ToBytes(fieldCode)
|
||||||
|
|
||||||
return "" + byte1 + byte2 + byte3 //TODO: bytes is python function
|
return "" + byte1 + byte2 + byte3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -681,9 +681,8 @@ class TxSerializer {
|
|||||||
fieldsAsBytes.push(fieldBytes)
|
fieldsAsBytes.push(fieldBytes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return fieldsAsBytes.join('')
|
return fieldsAsBytes.join('')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = TxSerializer
|
module.exports = TxSerializer
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ const infoSession3 = require("../static/img/events/xrpl-builder-office-hours-03.
|
|||||||
const infoSession4 = require("../static/img/events/xrpl-builder-office-hours-04.png");
|
const infoSession4 = require("../static/img/events/xrpl-builder-office-hours-04.png");
|
||||||
const decarb = require('../static/img/events/xrpl-decarb.png')
|
const decarb = require('../static/img/events/xrpl-decarb.png')
|
||||||
const townHall = require('../static/img/events/town-hall-meetup.png')
|
const townHall = require('../static/img/events/town-hall-meetup.png')
|
||||||
|
const devBootcamp = require('../static/img/events/dev-bootcamp.png')
|
||||||
export const frontmatter = {
|
export const frontmatter = {
|
||||||
seo: {
|
seo: {
|
||||||
title: "Events",
|
title: "Events",
|
||||||
@@ -1095,6 +1096,62 @@ const events = [
|
|||||||
image: require("../static/img/events/commons-launch.png"),
|
image: require("../static/img/events/commons-launch.png"),
|
||||||
end_date: "April 8, 2025",
|
end_date: "April 8, 2025",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "XRPL Core Dev Bootcamp AMA",
|
||||||
|
description:
|
||||||
|
"Join us on June 16 for an exclusive information session (AMA) about the XRPL Core Dev Bootcamp, a two-week intensive program focused on low-level development on the XRP Ledger.",
|
||||||
|
type: "ama",
|
||||||
|
link: "https://lu.ma/hqvlluce",
|
||||||
|
location: "Virtual",
|
||||||
|
date: "June 16, 2025",
|
||||||
|
image: devBootcamp,
|
||||||
|
end_date: "June 16, 2025",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "XRPL Townhall Meeting #4",
|
||||||
|
description:
|
||||||
|
"Join Us for a fourth XRPL Town Hall Meeting: Back from APEX!",
|
||||||
|
type: "info",
|
||||||
|
link: "https://lu.ma/90qih8kl",
|
||||||
|
location: "Virtual",
|
||||||
|
date: "June 19, 2025",
|
||||||
|
image: require("../static/img/events/commons-orange.png"),
|
||||||
|
end_date: "June 19, 2025",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "XRPL Meetup in Brussels",
|
||||||
|
description:
|
||||||
|
`Calling all blockchain and XRP Ledger enthusiasts in Brussels! Join XRPL Meetups to share knowledge, build real-life connections, and foster communities centered around blockchain and XRP Ledger. We're establishing local "XRPL Hubs" across Europe, and we want you to be a part of it!`,
|
||||||
|
type: "meetup",
|
||||||
|
link: "https://lu.ma/q32897pc",
|
||||||
|
location: "Bruxelles, Belgium",
|
||||||
|
date: "June 24, 2025",
|
||||||
|
image: require("../static/img/events/commons-orange.png"),
|
||||||
|
end_date: "June 24, 2025",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "XRPL Core Dev Bootcamp",
|
||||||
|
description:
|
||||||
|
"Are you an intermediate/advanced C++ dev ready to dive deep into blockchain? Join a 2-week, in-person bootcamp with hands-on training, expert-led sessions, and cohort-based learning focused on XRPL core development.",
|
||||||
|
type: "hackathon",
|
||||||
|
link: "https://www.xrpl-commons.org/build/core-dev-bootcamp",
|
||||||
|
location: "Paris, France",
|
||||||
|
date: "July 11, 2025",
|
||||||
|
image: devBootcamp,
|
||||||
|
end_date: "July 25, 2025",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "XRP Ledger Meetup Cannes",
|
||||||
|
description:
|
||||||
|
"Join us in Cannes for a special evening from 6:00 PM, focused on Bridging the XRPL and EVM Ecosystems. Hosted in collaboration by XRPL Commons, Ripple, and Peersyst, this XRPL meetup brings the community together for insightful conversations and meaningful connections.",
|
||||||
|
type: "meetup",
|
||||||
|
link: "https://lu.ma/q6dar9io",
|
||||||
|
location: "Cannes, France",
|
||||||
|
date: "June 30, 2025",
|
||||||
|
image: require("../static/img/events/commons-cannes.png"),
|
||||||
|
end_date: "June 30, 2025",
|
||||||
|
},
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -333,6 +333,19 @@ const events = [
|
|||||||
start_date: "November 22, 2024",
|
start_date: "November 22, 2024",
|
||||||
end_date: "November 22, 2024",
|
end_date: "November 22, 2024",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "XRP Ledger Meetup Cannes",
|
||||||
|
description:
|
||||||
|
"Join us in Cannes for a special evening from 6:00 PM, focused on Bridging the XRPL and EVM Ecosystems. Hosted in collaboration by XRPL Commons, Ripple, and Peersyst, this XRPL meetup brings the community together for insightful conversations and meaningful connections.",
|
||||||
|
type: "meetup",
|
||||||
|
link: "https://lu.ma/q6dar9io",
|
||||||
|
location: "Cannes, France",
|
||||||
|
image: require("../static/img/events/commons-cannes.png"),
|
||||||
|
date: "June 30, 2025",
|
||||||
|
start_date: "June 30, 2025",
|
||||||
|
end_date: "June 30, 2025",
|
||||||
|
},
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const findNearestUpcomingEvent = (events) => {
|
const findNearestUpcomingEvent = (events) => {
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ These codes indicate that the transaction was malformed, and cannot succeed acco
|
|||||||
| `temREDUNDANT` | The transaction would do nothing; for example, it is sending a payment directly to the sending account, or creating an offer to buy and sell the same currency from the same issuer. |
|
| `temREDUNDANT` | The transaction would do nothing; for example, it is sending a payment directly to the sending account, or creating an offer to buy and sell the same currency from the same issuer. |
|
||||||
| `temREDUNDANT_SEND_MAX` | {% badge href="https://github.com/XRPLF/rippled/releases/tag/0.28.0" %}Removed in: rippled 0.28.0{% /badge %} |
|
| `temREDUNDANT_SEND_MAX` | {% badge href="https://github.com/XRPLF/rippled/releases/tag/0.28.0" %}Removed in: rippled 0.28.0{% /badge %} |
|
||||||
| `temRIPPLE_EMPTY` | The [Payment transaction][] includes an empty `Paths` field, but paths are necessary to complete this payment. |
|
| `temRIPPLE_EMPTY` | The [Payment transaction][] includes an empty `Paths` field, but paths are necessary to complete this payment. |
|
||||||
|
| `temSEQ_AND_TICKET` | The transaction contains both a `TicketSequence` field and a non-zero `Sequence` value. A transaction cannot include both. _(Added by the [TicketBatch amendment][].)_ |
|
||||||
| `temBAD_WEIGHT` | The [SignerListSet transaction][] includes a `SignerWeight` that is invalid, for example a zero or negative value. |
|
| `temBAD_WEIGHT` | The [SignerListSet transaction][] includes a `SignerWeight` that is invalid, for example a zero or negative value. |
|
||||||
| `temBAD_SIGNER` | The [SignerListSet transaction][] includes a signer who is invalid. For example, there may be duplicate entries, or the owner of the SignerList may also be a member. |
|
| `temBAD_SIGNER` | The [SignerListSet transaction][] includes a signer who is invalid. For example, there may be duplicate entries, or the owner of the SignerList may also be a member. |
|
||||||
| `temBAD_QUORUM` | The [SignerListSet transaction][] has an invalid `SignerQuorum` value. Either the value is not greater than zero, or it is more than the sum of all signers in the list. |
|
| `temBAD_QUORUM` | The [SignerListSet transaction][] has an invalid `SignerQuorum` value. Either the value is not greater than zero, or it is more than the sum of all signers in the list. |
|
||||||
|
|||||||
@@ -61,7 +61,10 @@ Create a trustline from the operational account to the standby account. In the s
|
|||||||
|
|
||||||
Send issued tokens from the operational account to the standby account. In the operational account fields:
|
Send issued tokens from the operational account to the standby account. In the operational account fields:
|
||||||
|
|
||||||
1. Select **Allow Rippling** and click **Configure Account**.
|
1. Select **Allow Rippling** and click **Configure Account**.
|
||||||
|
{% admonition type="info" name="Note" %}
|
||||||
|
This enables the `defaultRipple` flag on the issuing account, which is set to `false` by default. You need to enable this in order to trade tokens issued by the account. See [Configure Issuer Settings](../../how-tos/use-tokens/issue-a-fungible-token#3.-configure-issuer-settings) to learn more.
|
||||||
|
{% /admonition %}
|
||||||
2. Enter a value in the **Amount** field, up to the maximum transfer amount you set in the trustline.
|
2. Enter a value in the **Amount** field, up to the maximum transfer amount you set in the trustline.
|
||||||
3. Enter the standby account address in the **Destination** field.
|
3. Enter the standby account address in the **Destination** field.
|
||||||
4. Enter the currency code from the trustline in the **Currency** field.
|
4. Enter the currency code from the trustline in the **Currency** field.
|
||||||
@@ -109,7 +112,6 @@ Create a second AMM pool with two issued tokens.
|
|||||||
|
|
||||||
You can open `ripplex11-create-amm.js` from the [Quickstart Samples](https://github.com/XRPLF/xrpl-dev-portal/tree/master/_code-samples/quickstart/js/) to view the source code.
|
You can open `ripplex11-create-amm.js` from the [Quickstart Samples](https://github.com/XRPLF/xrpl-dev-portal/tree/master/_code-samples/quickstart/js/) to view the source code.
|
||||||
|
|
||||||
|
|
||||||
### Create AMM
|
### Create AMM
|
||||||
|
|
||||||
This sends the `AMMCreate` transaction and creates a new AMM, using the initial assets provided. The code checks the token currency fields and formats the `AMMCreate` transaction based on the combination of `XRP` and custom tokens.
|
This sends the `AMMCreate` transaction and creates a new AMM, using the initial assets provided. The code checks the token currency fields and formats the `AMMCreate` transaction based on the combination of `XRP` and custom tokens.
|
||||||
|
|||||||
BIN
static/img/events/commons-cannes.png
Normal file
BIN
static/img/events/commons-cannes.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
static/img/events/commons-orange.png
Normal file
BIN
static/img/events/commons-orange.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
static/img/events/dev-bootcamp.png
Normal file
BIN
static/img/events/dev-bootcamp.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 130 KiB |
Reference in New Issue
Block a user