@redstone-finance/starknet-connector
v0.7.3
Published
A tool to inject RedStone data into Starknet compatible smart contracts
Downloads
297
Readme
🔗 @redstone-finance/starknet-connector
The @redstone-finance/starknet-connector module implements an alternative design of providing oracle data to smart contracts. Instead of constantly persisting data on Starknet storage (by data providers), the information is brought on-chain only when needed (by end users). Until that moment data remains in the decentralised cache layer, which is powered by RedStone light cache gateways and streamr data broadcasting protocol. Data is transferred to the Starknet by end users. The information integrity is verified on-chain through signature checking.
📦 Installation
Install @redstone-finance/starknet-connector from NPM registry
# Using yarn
yarn add @redstone-finance/starknet-connector
# Using NPM
npm install @redstone-finance/starknet-connector
🔥 Getting started
1. The contract
You can read here how the contract works. Here also you can find the description of the whole RedStone Oracle model.
2. Connecting to the contract
First, you need to import the connector code to your project
// Typescript
import {
StarknetPricesContractConnector,
StarknetContractParamsProvider,
} from "@redstone-finance/starknet-connector";
// Javascript
const {
StarknetPricesContractConnector,
StarknetContractParamsProvider,
} = require("@redstone-finance/starknet-connector");
Then you can invoke the contract methods described above pointing to the selected redstone data service and requested data feeds.
const prices = new StarknetPricesContractConnector(
account,
yourContractAddress,
"goerli-alpha"
);
const paramsProvider = new StarknetContractParamsProvider({
dataServiceId: "avalanche-main-data-service",
uniqueSignersCount: 1,
dataPackagesIds: ["ETH", "AVAX", "BTC"],
});
The account
param is needed to be passed for storage-write-methods. Otherwise, it can remain undefined.
Now you can access any of the contract's methods by invoking the code:
(await prices.getAdapter()).getPricesFromPayload(paramsProvider);
(await prices.getAdapter()).writePricesFromPayloadToContract(paramsProvider);
(await prices.getAdapter()).readPricesFromContract(paramsProvider);
(await prices.getAdapter()).readTimestampFromContract();
👨💻 Development and contributions
The codebase consists of a wrapper written in typescript which is responsible for packing the data and cairo smart contracts that extract the information. We encourage anyone to build and test the code and we welcome any issues with suggestions and pull requests.
Installing the dependencies
yarn install
📄 License
RedStone Starknet connector is an open-source and free software released under the BUSL-1.1 License.