https://github.com/sssshefer/d-ledger
First small decentralized application on the Internet Computer blockchain which works like a ledger
https://github.com/sssshefer/d-ledger
blockchain dfx internet-computer motoko
Last synced: about 2 months ago
JSON representation
First small decentralized application on the Internet Computer blockchain which works like a ledger
- Host: GitHub
- URL: https://github.com/sssshefer/d-ledger
- Owner: sssshefer
- Created: 2024-06-05T15:08:45.000Z (11 months ago)
- Default Branch: master
- Last Pushed: 2024-06-10T01:03:29.000Z (11 months ago)
- Last Synced: 2025-01-12T10:48:27.012Z (4 months ago)
- Topics: blockchain, dfx, internet-computer, motoko
- Language: CSS
- Homepage:
- Size: 68.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#
D-Ledger: A Decentralized Application on the Internet Computer
## Table of Contents
- [Introduction](#introduction)
- [Theory Notes](#theory-notes)
- [Internet Computer](#internet-computer)
- [DFX](#dfx)
- [Features and Functionality](#features-and-functionality)
- [Implementation](#implementation)
- [Backend Code](#backend-code)
- [Frontend Code](#frontend-code)
- [Running the Project Locally](#running-the-project-locally)## Introduction
D-Ledger is a decentralized application (dApp) created to learn and demonstrate the capabilities of the Internet Computer (IC) blockchain. This application simulates a simple banking system where users can top-up, withdraw, and check their balance.## Theory Notes
### Internet Computer
The Internet Computer is a blockchain that runs at web speed with unbounded capacity. It aims to extend the functionality of the public internet so that it can host backend software, transforming it into a global compute platform. Key features include:
- **Canisters**: Smart contracts on the Internet Computer that combine code and state.
- **Cycles**: The fuel that powers computation in the Internet Computer.
- **Motoko**: A programming language designed for the Internet Computer.### DFX
DFX is the command-line tool used to manage, deploy, and interact with canisters on the Internet Computer. Key commands include:
- `dfx start`: Starts the local replica.
- `dfx new `: Creates a new project.
- `dfx deploy`: Deploys the canisters.
- `dfx canister call `: Calls a method on a canister.To learn more before you start working with `dbank2`, see the following documentation available online:
- [Quick Start](https://internetcomputer.org/docs/current/developer-docs/setup/deploy-locally)
- [SDK Developer Tools](https://internetcomputer.org/docs/current/developer-docs/setup/install)
- [Motoko Programming Language Guide](https://internetcomputer.org/docs/current/motoko/main/motoko)
- [Motoko Language Quick Reference](https://internetcomputer.org/docs/current/motoko/main/language-manual)## Features and Functionality
- **Top-Up**: Allows users to add funds to their account.
- **Withdraw**: Enables users to withdraw funds from their account, ensuring the balance does not go negative.
- **Check Balance**: Users can query their current balance at any time.
- **Compound Interest**: The balance compounds over time, simulating interest accrual.## Implementation
### Backend Code
The backend canister is written in Motoko and manages the core banking operations: topping up, withdrawing, checking the balance, and compounding interest.### Frontend Code
The frontend is a simple HTML page with a form for user interactions and JavaScript for handling user input and communicating with the backend.## Running the Project Locally
If you want to test your project locally, you can use the following commands:- **Starts the replica, running in the background**
```bash
dfx start --background
```- **Deploys your canisters to the replica and generates your candid interface**
```bash
dfx deploy
```- **If you have made changes to your backend canister, you can generate a new candid interface with**
```bash
npm run generate
```
at any time. This is recommended before starting the frontend development server, and will be run automatically any time you run `dfx deploy`- **Start a development server with**
```bash
npm start
```
Which will start a server at `http://localhost:8080`, proxying API requests to the replica at port 4943.```bash
npm start
```Which will start a server at `http://localhost:8080`, proxying API requests to the replica at port 4943.