├── .gitignore ├── .vscode └── settings.json ├── .gitattributes ├── frontend ├── public │ ├── robots.txt │ ├── favicon.ico │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── index.html ├── src │ ├── setupTests.js │ ├── App.test.js │ ├── reportWebVitals.js │ ├── index.js │ ├── App.css │ ├── index.css │ ├── pages │ │ ├── CreateWallet.js │ │ ├── BnbBalance.js │ │ ├── TokenBalance.js │ │ ├── ImportWallet.js │ │ ├── SendBnb.js │ │ └── SendToken.js │ ├── App.js │ └── logo.svg ├── .gitignore ├── package.json ├── README.md └── .eslintcache ├── demo └── example.js ├── package.json ├── server.js ├── README.md ├── src ├── bep20ABI.json └── centerpirme.js └── contract └── bep20-token.sol /.gitignore: -------------------------------------------------------------------------------- 1 | # node_modules 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "git.ignoreLimitWarning": true 3 | } 4 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /frontend/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /frontend/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/centerprime/BinanceSmartChain-NodeJS-SDK/HEAD/frontend/public/favicon.ico -------------------------------------------------------------------------------- /frontend/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/centerprime/BinanceSmartChain-NodeJS-SDK/HEAD/frontend/public/logo192.png -------------------------------------------------------------------------------- /frontend/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/centerprime/BinanceSmartChain-NodeJS-SDK/HEAD/frontend/public/logo512.png -------------------------------------------------------------------------------- /frontend/src/setupTests.js: -------------------------------------------------------------------------------- 1 | // jest-dom adds custom jest matchers for asserting on DOM nodes. 2 | // allows you to do things like: 3 | // expect(element).toHaveTextContent(/react/i) 4 | // learn more: https://github.com/testing-library/jest-dom 5 | import '@testing-library/jest-dom'; 6 | -------------------------------------------------------------------------------- /frontend/src/App.test.js: -------------------------------------------------------------------------------- 1 | import { render, screen } from '@testing-library/react'; 2 | import App from './App'; 3 | 4 | test('renders learn react link', () => { 5 | render(); 6 | const linkElement = screen.getByText(/learn react/i); 7 | expect(linkElement).toBeInTheDocument(); 8 | }); 9 | -------------------------------------------------------------------------------- /frontend/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | -------------------------------------------------------------------------------- /frontend/src/reportWebVitals.js: -------------------------------------------------------------------------------- 1 | const reportWebVitals = onPerfEntry => { 2 | if (onPerfEntry && onPerfEntry instanceof Function) { 3 | import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => { 4 | getCLS(onPerfEntry); 5 | getFID(onPerfEntry); 6 | getFCP(onPerfEntry); 7 | getLCP(onPerfEntry); 8 | getTTFB(onPerfEntry); 9 | }); 10 | } 11 | }; 12 | 13 | export default reportWebVitals; 14 | -------------------------------------------------------------------------------- /frontend/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './index.css'; 4 | import App from './App'; 5 | import reportWebVitals from './reportWebVitals'; 6 | 7 | ReactDOM.render(, document.getElementById('root')); 8 | 9 | // If you want to start measuring performance in your app, pass a function 10 | // to log results (for example: reportWebVitals(console.log)) 11 | // or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals 12 | reportWebVitals(); 13 | -------------------------------------------------------------------------------- /frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | }, 10 | { 11 | "src": "logo192.png", 12 | "type": "image/png", 13 | "sizes": "192x192" 14 | }, 15 | { 16 | "src": "logo512.png", 17 | "type": "image/png", 18 | "sizes": "512x512" 19 | } 20 | ], 21 | "start_url": ".", 22 | "display": "standalone", 23 | "theme_color": "#000000", 24 | "background_color": "#ffffff" 25 | } 26 | -------------------------------------------------------------------------------- /frontend/src/App.css: -------------------------------------------------------------------------------- 1 | .App { 2 | text-align: center; 3 | } 4 | 5 | .App-logo { 6 | height: 40vmin; 7 | pointer-events: none; 8 | } 9 | 10 | @media (prefers-reduced-motion: no-preference) { 11 | .App-logo { 12 | animation: App-logo-spin infinite 20s linear; 13 | } 14 | } 15 | 16 | .App-header { 17 | background-color: #282c34; 18 | min-height: 100vh; 19 | display: flex; 20 | flex-direction: column; 21 | align-items: center; 22 | justify-content: center; 23 | font-size: calc(10px + 2vmin); 24 | color: white; 25 | } 26 | 27 | .App-link { 28 | color: #61dafb; 29 | } 30 | 31 | @keyframes App-logo-spin { 32 | from { 33 | transform: rotate(0deg); 34 | } 35 | to { 36 | transform: rotate(360deg); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /demo/example.js: -------------------------------------------------------------------------------- 1 | import BnbManager from "../src/centerpirme.js"; 2 | 3 | var bnbManager = new BnbManager("https://data-seed-prebsc-1-s1.binance.org:8545"); 4 | bnbManager.getBEPTokenBalance("0x6ce8da28e2f864420840cf74474eff5fd80e65b8","0x082a2027dc16f42d6e69be8fa13c94c17c910ebe").then( 5 | res=>{ 6 | console.log(res); 7 | }, error=>{ 8 | console.log(error); 9 | } 10 | ); 11 | 12 | 13 | let keystore = {}; 14 | let password = ""; 15 | let amount = 12 16 | let toAddress = '0x38C1E1204C10C8be90ecA671Da8Ea8a9AEb16031' 17 | 18 | 19 | let tokenContractAddress = '0xa1825717848bdeb9b1b2389471fe0d98c0af71a5'; 20 | 21 | bnbManager.sendToken(keystore,password,tokenContractAddress, toAddress,amount,3).then(res=>{ 22 | console.log(res); 23 | }) -------------------------------------------------------------------------------- /frontend/src/index.css: -------------------------------------------------------------------------------- 1 | body { 2 | margin: 0; 3 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", 4 | "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", 5 | sans-serif; 6 | -webkit-font-smoothing: antialiased; 7 | -moz-osx-font-smoothing: grayscale; 8 | } 9 | 10 | code { 11 | font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", 12 | monospace; 13 | } 14 | 15 | .content { 16 | padding: 20px; 17 | } 18 | 19 | .header { 20 | padding: 10px; 21 | background: #edf2f4; 22 | border-bottom: 1px solid #999; 23 | } 24 | .header a { 25 | color: #0072ff; 26 | text-decoration: none; 27 | margin-left: 20px; 28 | margin-right: 5px; 29 | } 30 | .header a:hover { 31 | color: #8a0f53; 32 | } 33 | .header small { 34 | color: #666; 35 | } 36 | .header .active { 37 | color: #2c7613; 38 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "node-binance-sdk", 3 | "version": "1.0.5", 4 | "description": "Centerprime Node Binance Smart Chain SDK", 5 | "type": "module", 6 | "main": "src/centerprime.js", 7 | "keywords": [ 8 | "ethereum", 9 | "blockchain", 10 | "sdk", 11 | "web3", 12 | "binance" 13 | ], 14 | "author": "Centerprime", 15 | "license": "UNLICENSED", 16 | "spm": { 17 | "main": "src/centerprime.js" 18 | }, 19 | "devDependencies": {}, 20 | "dependencies": { 21 | "axios": "^0.21.1", 22 | "express": "^4.17.1", 23 | "web3": "^1.3.1" 24 | }, 25 | "repository": { 26 | "type": "git", 27 | "url": "git+https://github.com/centerprime/Node-Binance-SDK.git" 28 | }, 29 | "bugs": { 30 | "url": "https://github.com/centerprime/Node-Binance-SDK/issues" 31 | }, 32 | "homepage": "https://github.com/centerprime/Node-Binance-SDK#readme" 33 | } 34 | -------------------------------------------------------------------------------- /frontend/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontend", 3 | "version": "0.1.0", 4 | "private": true, 5 | "dependencies": { 6 | "@testing-library/jest-dom": "^5.11.8", 7 | "@testing-library/react": "^11.2.2", 8 | "@testing-library/user-event": "^12.6.0", 9 | "react": "^17.0.1", 10 | "react-dom": "^17.0.1", 11 | "react-router-dom": "^5.2.0", 12 | "react-scripts": "4.0.1", 13 | "web-vitals": "^0.2.4" 14 | }, 15 | "scripts": { 16 | "start": "react-scripts start", 17 | "build": "react-scripts build", 18 | "test": "react-scripts test", 19 | "eject": "react-scripts eject" 20 | }, 21 | "eslintConfig": { 22 | "extends": [ 23 | "react-app", 24 | "react-app/jest" 25 | ] 26 | }, 27 | "browserslist": { 28 | "production": [ 29 | ">0.2%", 30 | "not dead", 31 | "not op_mini all" 32 | ], 33 | "development": [ 34 | "last 1 chrome version", 35 | "last 1 firefox version", 36 | "last 1 safari version" 37 | ] 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /frontend/src/pages/CreateWallet.js: -------------------------------------------------------------------------------- 1 | import React, {useState} from 'react'; 2 | import axios from 'axios'; 3 | 4 | 5 | function Home() { 6 | 7 | 8 | const [loading, setLoading] = useState(false); 9 | const password = useFormInput(''); 10 | const [error, setError] = useState(null); 11 | const [keystore, setKeystore] = useState(null); 12 | 13 | // handle button click of login form 14 | const handleLogin = () => { 15 | setError(null); 16 | setLoading(true); 17 | axios.post('http://localhost:3080/api/createWallet', { password: password.value }).then(response => { 18 | console.log(JSON.stringify(response.data)); 19 | setKeystore(JSON.stringify(response.data.keystore)); 20 | setLoading(false); 21 | }).catch(error => { 22 | setLoading(false); 23 | if (error.response.status === 401) setError(error.response.data.message); 24 | else setError("Something went wrong. Please try again later."); 25 | }); 26 | } 27 | 28 | 29 | return ( 30 |
31 | Create Wallet

32 |
33 | Password
34 | 35 |
36 |
37 |

38 | Keystore
39 |