Merge remote-tracking branch 'origin' into community-updates

This commit is contained in:
akcodez
2024-08-01 11:29:06 -07:00
14 changed files with 246 additions and 55 deletions

View File

@@ -183,9 +183,9 @@
}
},
"node_modules/ws": {
"version": "8.17.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz",
"integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==",
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"engines": {
"node": ">=10.0.0"
},

51
blog/2024/clio-2.2.2.md Normal file
View File

@@ -0,0 +1,51 @@
---
category: 2024
date: 2024-07-22
labels:
- Clio Release Notes
theme:
markdown:
editPage:
hide: true
---
# Introducing Clio version 2.2.2
Version 2.2.2 of Clio, an XRP Ledger API server optimized for HTTP and WebSocket API calls, is now available. This release adds bug fixes.
## Bug fixes
* Relax error when `full` or `accounts` set to `false` by @godexsoft in https://github.com/XRPLF/clio/issues/1537
* Add more account check by @cindyyan317 in https://github.com/XRPLF/clio/pull/1543
## Database Migration
If you are currently running Clio 1.0.4 or earlier and upgrading, you must perform a database migration to properly support NFT data. See the [`clio_migrator` branch](https://github.com/XRPLF/clio/tree/clio_migrator%402.0.0) and its README for instructions.
## Install / Upgrade
| Package | SHA-256 |
|:--------|:--------|
| [Ubuntu Deb (x86_64)](https://github.com/XRPLF/clio/releases/download/2.2.2/clio_2.2.2-1_amd64.deb) | `c18d6c8aefa20dbe74561dc01cd893ec7e9df93f68c0f4a5c7b5e279a37e4272` |
For other platforms, please [build from source](https://github.com/XRPLF/clio/releases/tag/2.2.2). The most recent commit in the git log should be:
```text
commit 665fab183a967bb886c68734544ec7e80bea4903
Author: cyan317 <120398799+cindyyan317@users.noreply.github.com>
Date: Mon Jul 15 16:42:12 2024 +0100
fix: Add more account check (#1543)
Make sure all char is alphanumeric for account
```
## What's Changed
See the [Full Changelog on GitHub](https://github.com/XRPLF/clio/compare/2.2.1...2.2.2)
## Feedback
The Clio open-source project is seeking feedback and engagement from the XRPL community.
- To provide feedback, please [fill out this survey](https://forms.gle/fnGPTUCAdmEzkFy57).
- To report an issue or propose a new idea, please [open an issue](https://github.com/XRPLF/clio/issues).

View File

@@ -0,0 +1,72 @@
---
category: 2024
date: 2024-07-30
labels:
- rippled Release Notes
theme:
markdown:
editPage:
hide: true
---
# Introducing XRP Ledger version 2.2.1
Version 2.2.1 of `rippled`, the reference server implementation of the XRP Ledger protocol, is now available. This release fixes a critical bug, introduced in 2.2.0, when handling some types of RPC requests. It does not introduce any new amendments.
<!-- BREAK -->
## Action Required
Five amendments introduced in version 2.2.0 are open for voting according to the XRP Ledger's [amendment process](https://xrpl.org/amendments.html), which enables protocol changes following two weeks of >80% support from trusted validators.
If you operate an XRP Ledger server version 2.2.0, upgrade to version 2.2.1 as soon as possible to ensure service continuity.
If you operate an XRP Ledger server older than version 2.2.0, upgrade to version 2.2.1 by August 14, 2024 to ensure service continuity. The exact time that protocol changes take effect depends on the voting decisions of the decentralized network.
## Install / Upgrade
On supported platforms, see the [instructions on installing or updating `rippled`](../../docs/infrastructure/installation/index.md).
| Package | SHA-256 |
|:--------|:--------|
| [RPM for Red Hat / CentOS (x86-64)](https://repos.ripple.com/repos/rippled-rpm/stable/rippled-2.2.1-1.el7.x86_64.rpm) | `32312c90ac4c685f11b168c5b9ec75aee8f4b2d7bef5dc11b42232679d0cd1f4` |
| [DEB for Ubuntu / Debian (x86-64)](https://repos.ripple.com/repos/rippled-deb/pool/stable/rippled_2.2.1-1_amd64.deb) | `f696e6898ad64e73d75bb9a1f50fb325b9675b168ffaeeacfce53fbd9e35bbee` |
| [Portable Builds (Linux x86-64)](https://github.com/XRPLF/rippled-portable-builds) | (Use signature verification) |
For other platforms, please [build from source](https://github.com/ripple/rippled/tree/master/Builds). The most recent commit in the git log should be the change setting the version:
```text
commit e6ef0fc26cb8d4db25075eaa1fe21fcc7f984751
Author: Ed Hennis <ed@ripple.com>
Date: Mon Jul 22 18:08:16 2024 -0400
Set version to 2.2.1
```
## Full Changelog
### Amendments
- None
### Bug fixes
- Improve error handling in some RPC commands. [#5078](https://github.com/XRPLF/rippled/pull/5078)
- Use error codes throughout fast Base58 implementation. [#5078](https://github.com/XRPLF/rippled/pull/5078)
## Contact and More Information
[Sign Up for Future Release Announcements](https://groups.google.com/g/ripple-server)
The public source code repository for `rippled` is hosted on GitHub at <https://github.com/XRPLF/rippled>.
We welcome all contributions and invite everyone to join the community of XRP Ledger developers to help build the Internet of Value.
#### Bug Bounties and Responsible Disclosures:
We welcome reviews of the `rippled` code and urge researchers to responsibly disclose any issues they may find.
To report a bug, please send a detailed report to: <bugs@xrpl.org>

View File

@@ -6,6 +6,8 @@
- group: '2024'
expanded: false
items:
- page: 2024/clio-2.2.2.md
- page: 2024/rippled-2.2.1.md
- page: 2024/filedgr.md
- page: 2024/clio-2.2.1.md
- page: 2024/clio-2.2.0.md

View File

@@ -1,15 +1,16 @@
import React, { useState, useMemo } from "react";
import { useThemeHooks } from '@redocly/theme/core/hooks';
import { useThemeHooks } from "@redocly/theme/core/hooks";
const moment = require("moment");
const amaImage = require("../static/img/events/AMAs.png")
const hackathon = require("../static/img/events/Hackathons.png")
const sanDiego = require("../static/img/events/event-meetup-san-diego@2x.jpg")
const miami = require("../static/img/events/event-meetup-miami@2x.jpg")
const conference = require("../static/img/events/Conference.png")
const zone = require("../static/img/events/XRPLZone.png")
const calls = require("../static/img/events/CommunityCalls.png")
const brazil = require("../static/img/events/event-meetup-brazil.png")
const korea = require("../static/img/events/SouthKoreaMeetup.png")
const amaImage = require("../static/img/events/AMAs.png");
const hackathon = require("../static/img/events/Hackathons.png");
const sanDiego = require("../static/img/events/event-meetup-san-diego@2x.jpg");
const miami = require("../static/img/events/event-meetup-miami@2x.jpg");
const conference = require("../static/img/events/Conference.png");
const zone = require("../static/img/events/XRPLZone.png");
const calls = require("../static/img/events/CommunityCalls.png");
const brazil = require("../static/img/events/event-meetup-brazil.png");
const korea = require("../static/img/events/SouthKoreaMeetup.png");
const infoSession = require("../static/img/events/InfoSessions.png");
export const frontmatter = {
seo: {
title: "Events",
@@ -462,11 +463,11 @@ const events = [
name: "XRPL Grants Info Session: Financial Inclusion Focused",
description:
"Join us for a live information session and Q&A on applying to XRPL Grants Wave 7. This session will provide a general overview of the XRPL Grants application for Wave 7, with a focus on Financial Inclusion projects.",
type: "info-session",
type: "info",
link: "https://www.youtube.com/watch?v=TgLaAXTZY7Q",
location: "Virtual - Zoom",
date: "September 05, 2023",
image: require("../static/img/events/InfoSessions.png"),
image: infoSession,
end_date: "September 05, 2023",
},
{
@@ -484,11 +485,11 @@ const events = [
name: "XRPL Grants Info Session: Decentralized Exchange (DEX) Focused",
description:
"Watch the recorded information session and Q&A on applying to XRPL Grants Wave 7. This session will provide a general overview of the XRPL Grants application for Wave 7, with a focus on Decentralized Exchange (DEX) projects.",
type: "info-session",
type: "info",
link: "https://www.youtube.com/watch?v=BbGu0QC5WEE",
location: "Virtual - Zoom",
date: "September 06, 2023",
image: require("../static/img/events/InfoSessions.png"),
image: infoSession,
end_date: "September 06, 2023",
},
{
@@ -639,7 +640,6 @@ const events = [
image: conference,
end_date: "June 1, 2024",
},
{
name: "Permissionless",
description:
@@ -742,7 +742,7 @@ const events = [
{
name: "XRP Community After Hours",
description:
"Celebrate with the XRP Community during Korea Blockchain Week! Dont miss this opportunity to mingle with the vibrant XRP community, visionary XRPL developers, trailblazing innovators, and influential investors.",
"Celebrate with the XRP Community during Korea Blockchain Week! Don't miss this opportunity to mingle with the vibrant XRP community, visionary XRPL developers, trailblazing innovators, and influential investors.",
type: "meetup",
link: "https://lu.ma/mbg067j3",
location: "Seongdong-su, Seoul",
@@ -750,10 +750,32 @@ const events = [
image: korea,
end_date: "September 4, 2024",
},
{
name: "XRPL Builder Office Hours",
description:
"XRPL Builder Office Hours is an open forum hosted monthly by Developer Advocates to answer technical and business questions from community members.",
type: "info",
link: "https://ripple.zoom.us/meeting/register/tJMscOCsrDoiHNUN6hZLpFVR69OcfG9rXtIA#/registration",
location: "Virtual - Zoom",
date: "August 23, 2024",
image: infoSession,
end_date: "August 23, 2024",
},
{
name: "APEX 2024: The XRPL Developer Summit",
description:
"Apex XRPL Developer Summit is the annual event where developers, contributors, and thought leaders come together to learn, build, share, network, and celebrate all things XRP Ledger.",
type: "conference",
link: "https://www.youtube.com/playlist?list=PLl-QsmXvjodqeHPgq1UrKVcRPoNJe12Wv",
location: "Amsterdam",
date: "June 11 - 13, 2024",
image: conference,
end_date: "June 13, 2024",
},
];
export default function Events() {
const { useTranslate} = useThemeHooks();
const { useTranslate } = useThemeHooks();
const { translate } = useTranslate();
const { past, upcoming } = useMemo(() => categorizeDates(events), []);
@@ -763,8 +785,8 @@ export default function Events() {
hackathon: true,
ama: true,
cc: true,
zone: true,
"info-session": true,
zone: true,
"info": true,
});
const [pastFilters, setPastFilters] = useState({
@@ -774,7 +796,7 @@ export default function Events() {
ama: true,
cc: true,
zone: true,
"info-session": true,
"info": true,
});
const filteredUpcoming = useMemo(() => {
@@ -782,16 +804,18 @@ export default function Events() {
(event) => upcomingFilters[event.type.split("-")[0]] !== false
);
}, [upcoming, upcomingFilters]);
const filteredPast = useMemo(() => {
return past.filter((event) => pastFilters[event.type.split("-")[0]] !== false);
return past.filter(
(event) => pastFilters[event.type.split("-")[0]] !== false
);
}, [past, pastFilters]);
const handleUpcomingFilterChange = (event) => {
const { name, checked } = event.target;
setUpcomingFilters((prevFilters) => ({
...prevFilters,
[name.split("-")[0]]: checked,
[name.replace("-upcoming", "")]: checked,
}));
};
@@ -799,7 +823,7 @@ export default function Events() {
const { name, checked } = event.target;
setPastFilters((prevFilters) => ({
...prevFilters,
[name.split("-")[0]]: checked,
[name.replace("-past", "")]: checked,
}));
};
@@ -835,26 +859,26 @@ export default function Events() {
<div className="pt-5 pr-2 col">
<div className="d-flex flex-column-reverse">
<h2 className="mb-8 h4 h2-sm">
{translate("XRP Ledger Apex")}
{translate("XRPL Zone Seoul")}
</h2>
<h6 className="mb-3 eyebrow">{translate("Save the Date")}</h6>
</div>
<p className="mb-4">
{translate(
"XRP Ledger Apex 2024 is the official global community summit that unites developers, innovators, businesses, and investors who are building the future of finance on the XRP Ledger blockchain."
"Join us at XRPL Zone Seoul where developers, corporates, fintechs, banks, VCs, academia, and the XRP community come together under one roof for the biggest XRPL event in South Korea!"
)}
</p>
<div className=" my-3 event-small-gray">
Location: Amsterdam
Location: Seongdong-su, Seoul
</div>
<div className="py-2 my-3 event-small-gray">
Date: June 11-13, 2024
September 4th, 2024
</div>
<div className="d-lg-block">
<a
className="btn btn-primary btn-arrow-out"
target="_blank"
href="https://register.xrpledgerapex.com/2024/?utm_source=xrplorg&utm_medium=web&utm_campaign=events"
href="https://ripple.swoogo.com/xrpl-zone-seoul"
>
{translate("Register Now")}
</a>
@@ -885,7 +909,9 @@ export default function Events() {
checked={upcomingFilters.conference}
onChange={handleUpcomingFilterChange}
/>
<label htmlFor="conference-upcoming">{translate("Conference")}</label>
<label htmlFor="conference-upcoming">
{translate("Conference")}
</label>
</div>
<div className="form-check form-check-inline">
<input
@@ -909,7 +935,9 @@ export default function Events() {
checked={upcomingFilters.hackathon}
onChange={handleUpcomingFilterChange}
/>
<label htmlFor="hackathon-upcoming">{translate("Hackathons")}</label>
<label htmlFor="hackathon-upcoming">
{translate("Hackathons")}
</label>
</div>
<div className="form-check form-check-inline">
<input
@@ -933,7 +961,9 @@ export default function Events() {
checked={upcomingFilters.cc}
onChange={handleUpcomingFilterChange}
/>
<label htmlFor="cc-upcoming">{translate("Community Calls")}</label>
<label htmlFor="cc-upcoming">
{translate("Community Calls")}
</label>
</div>
<div className="form-check form-check-inline">
<input
@@ -949,19 +979,21 @@ export default function Events() {
</div>
<div className="form-check form-check-inline">
<input
defaultValue="info-session"
id="info-session-upcoming"
name="info-session-upcoming"
defaultValue="info"
id="info-upcoming"
name="info-upcoming"
type="checkbox"
className="events-filter"
checked={upcomingFilters["info-session"]}
checked={upcomingFilters["info"]}
onChange={handleUpcomingFilterChange}
/>
<label htmlFor="info-session-upcoming">{translate("Info Session")}</label>
<label htmlFor="info-upcoming">
{translate("Info Session")}
</label>
</div>
</div>
</div>
{/* # Available Types - conference, hackathon, ama, cc, zone, meetup, info-session */}
{/* # Available Types - conference, hackathon, ama, cc, zone, meetup, info */}
<div className="mt-2 row row-cols-1 row-cols-lg-3 card-deck">
{filteredUpcoming.map((event, i) => (
<a
@@ -977,7 +1009,9 @@ export default function Events() {
background: `url(${event.image}) no-repeat`,
}}
>
<div className="event-card-title">{translate(event.name)}</div>
<div className="event-card-title">
{translate(event.name)}
</div>
</div>
<div className="event-card-body">
<p>{translate(event.description)}</p>
@@ -1013,7 +1047,9 @@ export default function Events() {
checked={pastFilters.conference}
onChange={handlePastFilterChange}
/>
<label htmlFor="conference-past">{translate("Conference")}</label>
<label htmlFor="conference-past">
{translate("Conference")}
</label>
</div>
<div className="form-check form-check-inline">
<input
@@ -1037,7 +1073,9 @@ export default function Events() {
checked={pastFilters.hackathon}
onChange={handlePastFilterChange}
/>
<label htmlFor="hackathon-past">{translate("Hackathons")}</label>
<label htmlFor="hackathon-past">
{translate("Hackathons")}
</label>
</div>
<div className="form-check form-check-inline">
<input
@@ -1077,15 +1115,17 @@ export default function Events() {
</div>
<div className="form-check form-check-inline">
<input
defaultValue="info-session"
id="info-session-past"
name="info-session-past"
defaultValue="info"
id="info-past"
name="info-past"
type="checkbox"
className="events-filter"
checked={pastFilters["info-session"]}
checked={pastFilters["info"]}
onChange={handlePastFilterChange}
/>
<label htmlFor="info-session-past">{translate("Info Session")}</label>
<label htmlFor="info-past">
{translate("Info Session")}
</label>
</div>
</div>
</div>
@@ -1103,7 +1143,9 @@ export default function Events() {
background: `url(${event.image}) no-repeat`,
}}
>
<div className="event-card-title">{translate(event.name)}</div>
<div className="event-card-title">
{translate(event.name)}
</div>
</div>
<div className="event-card-body">
<p>{translate(event.description)}</p>

View File

@@ -3,6 +3,8 @@ import { useThemeHooks } from "@redocly/theme/core/hooks";
import moment from "moment";
import { Link } from "@redocly/theme/components/Link/Link";
const infoSession = require("../static/img/events/InfoSessions.png");
export const frontmatter = {
seo: {
title: "Community",
@@ -67,7 +69,7 @@ const events = [
link: "https://www.youtube.com/watch?v=BbGu0QC5WEE",
location: "Virtual - Zoom",
date: "September 06, 2023",
image: require("../static/img/events/InfoSessions.png"),
image: infoSession,
end_date: "September 06, 2023",
start_date: "September 06, 2023",
},
@@ -203,6 +205,18 @@ const events = [
start_date: "September 4, 2024",
end_date: "September 4, 2024",
},
{
name: "XRPL Builder Office Hours",
description:
"XRPL Builder Office Hours is an open forum hosted monthly by Developer Advocates to answer technical and business questions from community members.",
type: "info-session",
link: "https://ripple.zoom.us/meeting/register/tJMscOCsrDoiHNUN6hZLpFVR69OcfG9rXtIA#/registration",
location: "Virtual - Zoom",
date: "August 23, 2024",
image: infoSession,
start_date: "August 23, 2024",
end_date: "August 23, 2024",
},
];
const { nearestDateDiff, nearestEvent } = findNearestUpcomingEvent(events);
const XrplEventsAndCarouselSection = ({ events }) => {

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
docs/img/uc-the-oracle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -10,10 +10,11 @@ labels:
A smart contract is a blockchain-based program that handles the conditions and executes the fulfillment of an agreement between two parties. Broken into its simplest components, a smart contract _does_ something if _something else_ happens.
The benefit of encoding a smart contract into a blockchain is that it enables contracts to be securely carried out without traditional third-parties, like financial or legal institutions. Instead, the contract is supervised by the distributed, decentralized network of computers that run the blockchain.
![Smart Contract](/docs/img/uc-smart-contract.png)
This enables you to transact with anybody without having to trust they'll uphold their end of a deal; the conditions of the smart contract will force them to.
The benefit of encoding a smart contract into a blockchain is that it enables contracts to be securely carried out without traditional third parties like financial or legal institutions. Instead, the contract is supervised by the distributed, decentralized network of computers that run the blockchain.
This enables you to transact with anybody without having to trust they'll uphold their end of a deal: the conditions of the smart contract force them to comply.
## Conditionally Held Escrow
@@ -22,7 +23,12 @@ Smart contracts on the XRP Ledger work through conditionally held escrows.
### Create the Escrow
A conditionally held escrow is similar to a normal escrow: you set aside funds with an escrow to guarantee funds are available to a recipient. The difference is that a conditionally held escrow on the ledger has a `Condition` attached to it, which serves as a lock on the funds. The ledger won't release those funds until an `EscrowFinish` transaction is submitted with the corresponding `Fulfillment` field. The `Condition` and `Fulfillment` fields can be viewed as a lock and key on an escrow.
A conditionally held escrow is similar to a normal escrow: you set aside funds with an escrow to guarantee funds are available to a recipient. The difference is that a conditionally held escrow on the ledger has a `Condition` attached to it, which serves as a lock on the funds. The ledger won't release those funds until an `EscrowFinish` transaction is submitted with the corresponding `Fulfillment` field.
![Escrow with lock and key](/docs/img/uc-yescrow-holding-lock-and-key.png)
The `Condition` and `Fulfillment` fields can be viewed as a lock and key on an escrow.
See: [`EscrowCreate`](../../references/protocol/transactions/types/escrowcreate.md).
@@ -31,6 +37,8 @@ See: [`EscrowCreate`](../../references/protocol/transactions/types/escrowcreate.
An oracle is a neutral third-party agent that can verify real-world events to either fulfill or invalidate a smart contract. Oracles are vital to making conditional escrows work by generating the condition and fulfillment, and keeping the fulfillment secret until the terms of the contract are met.
![The Oracle](/docs/img/uc-the-oracle.png)
In the context of smart contracts, an oracle will most likely be software that can read real-world data. The oracle would be programmed with the terms of the contract between parties and generate the condition and fulfillment hex values.
The oracle gives the condition hex value to the escrow creator, enabling them to set up the escrow initially.
@@ -44,6 +52,8 @@ See: [Generate a condition and fulfillment](../../tutorials/how-tos/use-speciali
Smart contracts have a wide range of uses, but some uses include:
1. Handling payments on large-value items you would otherwise need lawyers for, such as mortgages.
![Real Estate and Supply Chain](/docs/img/uc-smart-contract-real-estate-supplies.png)
2. Supply-chain management to ensure funds are delivered upon receipt of goods.
3. Automating certain kinds of insurance claims that can be verified by software.
![Insurance and Payments](/docs/img/uc-smart-contract-insurance.png)
4. Ensuring payments are given for services rendered.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 141 KiB