# XRP

## Code

* `XrpBridge.sol`
* `XrpBridge.impl.sol`

## Address

* Xrp Bridge Symbol : `XRP`
* Xrp Bridge Contract Address : `0x4E6C37162021FdA832fB95aFF42Af92c2e8B6257`

## Events

### XrpTransactionSuggested

```bash
event XrpTransactionSuggested(bytes32 govId, uint swapIndex, uint suggestIndex);Event occurs when Bridge Operator proposes Raw Transaction Data of Terra Chain,
```

* `bytes32 govId` : Unique Identifier of Governance
* `uint swapIndex` : Swap Data Index
* `uint suggestIndex` : Suggestion Data Index

### XrpTransactionSelected

```bash
event XrpTransactionSelected(bytes32 govId, uint selectionIndex);
```

Event will occur upon completion of agreement on the raw transaction data of XRP Chain by a Bridge Validator

* `bytes32 govId` : Unique Identifier of Governance
* `uint selectionIndex` : Selection Data Index

### XrpTransactionValidated

```bash
event XrpTransactionValidated(bytes32 govId, uint selectionIndex, string fromChain, bytes32[] bytes32s, uint[] uints);
```

Event occurs when a Bridge Validator submits a Signature for agreed Raw Transaction Data

* `bytes32 govId` : Unique Identifier of Governance
* `uint selectionIndex` : Selection Data Index
* `string fromChain` : Chain Symbol requesting bridging
* `bytes32[] bytes32s` : Bytes32 Data Array corresponding to Selection Data
* `uint[] uints` : Bytes32 Data Array corresponding to Selection Data

## Interface

```bash
pragma solidity 0.5.0;

interface XrpBridge {
    function getVersion() public pure returns(string memory);
    function getStepStatus(bytes32 govId) public view returns(bool needSuggest, bool needRelaySuggestion, bool needRelaySelection, uint dataIndex, uint suggestIndex, uint selectionIndex);
    function getSwapDataArray(bytes32 govId, uint dataIndex) public view returns(bytes32[] memory bytes32s, uint[] memory uints);
    function getGovInfoArray(bytes32 govId) public view returns(uint[] memory uints, bytes32[] memory bytes32s);
    function getSuggestion(uint types, bytes32 govId, uint index) public view returns(uint swapIndex, address[] memory validators, bytes32[] memory signatureHashs, uint fee, uint seq);
    
    function addBridgeInfo(string memory chain, address mig, uint[] memory uints, bytes32[] memory bytes32s, bytes memory comment) public;
    function removeBridgeInfo(string memory chain) public;
    
    function relaySwap() public;
    function validateSwap(bytes32[] memory sigs) public;
    
    function suggestTransaction(bytes32 govId, uint swapIndex, address[] memory validators, bytes32[] memory sigHashs, uint fee, uint seq) public;
    function relayTransactionSuggested(bytes32 govId, uint suggestIndex) public;
    function validateTransactionSuggested(bytes32 govId, uint suggestIndex, address validator, uint8 vSig, bytes32 rSig, bytes32 sSig) public;
    
    function relayTransactionSelected(bytes32 govId, uint selectionIndex) public;
    function validateTransactionSelected(bytes32 govId, uint selectionIndex, address validator, uint8[] memory vSigs, bytes32[] memory rSigs, bytes32[] memory sSigs) public;
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bridge-docs.orbitchain.io/contract/bridge/xrp.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
