# xdc3_rust xdc3_rust SDK with support for smart contracts, XRC20 & XRC721. ## Usage Add the following dependency to your `Cargo.toml`: ```toml [dependencies] xdc3_rust = "0.1.4" ``` ## This SDK supports following Read & Write operations:- ``` | XRC20 Token: Read methods | XRC20 Token: Write methods | | --- | --- | | name() | approve(receiverAddress , amount) | | symbol() | transfer(recipient, amount) | | decimal() | transferFrom(sender, recipient, amount) | | totalSupply() | increaseAllowance(spender, addedValue) | | balanceOf(account) | decreaseAllowance(spender, subtractedValue) | | allowance(owner, spender) | | | | | | XRC721 Token: Read methods | XRC721 Token: Write methods | | ---- | ---- | | name() | setApprovalForAll(operatorAddress, booleanValue) | | symbol() | approve(receiverAddress , tokenId) | | totalSupply() | transferFrom(recipient, tokenId) | | balanceOf(owner address) | safeTransferFrom(spender, tokenId) | | ownerOf(tokenId) | | | tokenURI(tokenId) | | | tokenByIndex(index) | | | tokenOfOwnerByIndex(ownerAddress,index) | | | supportInterface(interfaceId) | | | getApproved(tokenId) | | | isApprovedForAll(ownerAddress,operator) | | | | | ``` ## Environment Variable Create a .env file in the root directory of the Rust project to put the wallet and endpoint information in like so: ```APOTHEM_ADDRESS = wss://ws.apothem.network``` ## Example for XRC20 #![allow(unused_imports)] use std::io::stdin; mod lib; use lib::xrc20::name; #[allow(unused_must_use)] fn main() { let mut token_address = String::new(); println!("enter token address: "); stdin().read_line(&mut token_address); let token_name = name::token_name(token_address).unwrap(); println!("token name: {}", token_name); } This example returns name of the specified address. ## Example for XRC721 #![allow(unused_imports)] use std::io::stdin; mod lib; use lib::xrc721::name::token_name; #[allow(unused_must_use)] fn main() { let mut token_address = String::new(); println!("enter token address: "); stdin().read_line(&mut token_address); let token_name = name::token_name(token_address).unwrap(); println!("token name: {}", token_name); } ## Transports - [x] WebSockets transport ## Types - [x] Types for `U256,H256,Address(H160)` - [x] Transaction type (`Transaction` from Parity)