Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Pull Request

## Summary

- Describe the purpose of this PR in one or two sentences.
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/ci-coverage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ jobs:
run: |
cargo llvm-cov \
--workspace \
--lcov --output-path ../lcov.info \
--lcov --output-path ../lcov.info
cargo llvm-cov \
--workspace \
--html --output-dir ../coverage-html

- name: Extract coverage percentage
Expand Down
3 changes: 3 additions & 0 deletions .markdownlint.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
"MD013": false,
"MD024": { "siblings_only": true },
"MD033": false,
"MD036": false,
"MD040": false,
"MD041": false,
"MD060": false,
"no-hard-tabs": true,
"no-trailing-spaces": true,
"no-multiple-blanks": true,
Expand Down
4 changes: 2 additions & 2 deletions COMEBACKHERE-contracts/contracts/compliance/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ impl ComplianceContract {
Ok(())
}

pub fn accept_admin(_e: Env, new_admin: Address) {
pub fn accept_admin(e: Env, new_admin: Address) -> Result<(), ContractError> {
new_admin.require_auth();
let pending: Address = e
.storage()
Expand Down Expand Up @@ -183,7 +183,7 @@ mod tests {
fn setup(ts: u64) -> (Env, Address, Address, Address) {
let e = Env::default();
e.mock_all_auths();
let contract_id = e.register_contract(None, ComplianceContract);
let contract_id = e.register(ComplianceContract, ());
let admin = Address::generate(&e);
let addr = Address::generate(&e);
ComplianceContractClient::new(&e, &contract_id).initialize(&admin);
Expand Down
16 changes: 8 additions & 8 deletions COMEBACKHERE-contracts/contracts/invoice/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ mod tests {
let env = Env::default();
env.mock_all_auths();
let admin = Address::generate(&env);
let contract_id = env.register_contract(None, InvoiceContract);
let contract_id = env.register(InvoiceContract, ());
InvoiceContractClient::new(&env, &contract_id).initialize(&admin);
env.ledger().with_mut(|li| li.timestamp = ts);
(env, contract_id, admin)
Expand Down Expand Up @@ -469,7 +469,7 @@ mod tests {
let token = Address::generate(&env);
env.ledger().set_timestamp(1000);

let contract_id = env.register_contract(None, InvoiceContract);
let contract_id = env.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&env, &contract_id);
client.initialize(&admin);

Expand All @@ -489,7 +489,7 @@ mod tests {
let token = Address::generate(&env);
env.ledger().set_timestamp(1000);

let contract_id = env.register_contract(None, InvoiceContract);
let contract_id = env.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&env, &contract_id);
client.initialize(&admin);

Expand All @@ -509,7 +509,7 @@ mod tests {
let admin = Address::generate(&env);
let non_admin = Address::generate(&env);

let contract_id = env.register_contract(None, InvoiceContract);
let contract_id = env.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&env, &contract_id);
client.initialize(&admin);

Expand All @@ -524,7 +524,7 @@ mod tests {
let admin = Address::generate(&env);
let non_admin = Address::generate(&env);

let contract_id = env.register_contract(None, InvoiceContract);
let contract_id = env.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&env, &contract_id);
client.initialize(&admin);

Expand Down Expand Up @@ -582,8 +582,8 @@ mod tests {
let env = Env::default();
env.mock_all_auths();
let admin = Address::generate(&env);
let invoice_cid = env.register_contract(None, InvoiceContract);
let treasury_cid = env.register_contract(None, TreasuryStub);
let invoice_cid = env.register(InvoiceContract, ());
let treasury_cid = env.register(TreasuryStub, ());
let invoice_client = InvoiceContractClient::new(&env, &invoice_cid);
invoice_client.initialize(&admin);
invoice_client.set_treasury(&admin, &treasury_cid);
Expand Down Expand Up @@ -640,7 +640,7 @@ mod tests {
let env = Env::default();
env.mock_all_auths();
let admin = Address::generate(&env);
let invoice_cid = env.register_contract(None, InvoiceContract);
let invoice_cid = env.register(InvoiceContract, ());
let invoice_client = InvoiceContractClient::new(&env, &invoice_cid);
invoice_client.initialize(&admin);
env.ledger().with_mut(|li| li.timestamp = 1000);
Expand Down
2 changes: 1 addition & 1 deletion COMEBACKHERE-contracts/contracts/invoice/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ fn setup_test() -> (Env, Address, Address, InvoiceContractClient) {
let admin = Address::generate(&env);
let merchant = Address::generate(&env);

let contract_id = env.register_contract(None, InvoiceContract);
let contract_id = env.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&env, &contract_id);

client.initialize(&admin);
Expand Down
4 changes: 2 additions & 2 deletions COMEBACKHERE-contracts/contracts/invoice/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ fn test_create_invoice_expiry_overflow() {
let admin = Address::generate(&e);
let merchant = Address::generate(&e);

let contract_id = e.register_contract(None, InvoiceContract);
let contract_id = e.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&e, &contract_id);

client.initialize(&admin);
Expand Down Expand Up @@ -44,7 +44,7 @@ fn test_create_invoice_success() {
base_reserve: 10,
});

let contract_id = e.register_contract(None, InvoiceContract);
let contract_id = e.register(InvoiceContract, ());
let client = InvoiceContractClient::new(&e, &contract_id);

client.initialize(&admin);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use soroban_sdk::{testutils::Address as _, vec, Address, Env};
fn setup_env() -> (Env, Address) {
let env = Env::default();
env.mock_all_auths();
let contract_id = env.register_contract(None, TreasuryContract);
let contract_id = env.register(TreasuryContract, ());
(env, contract_id)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use soroban_sdk::{testutils::Address as _, vec, Address, Env};
fn setup_env() -> (Env, Address) {
let env = Env::default();
env.mock_all_auths();
let contract_id = env.register_contract(None, TreasuryContract);
let contract_id = env.register(TreasuryContract, ());
(env, contract_id)
}

Expand Down
2 changes: 1 addition & 1 deletion COMEBACKHERE-contracts/contracts/treasury/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ mod tests {
fn setup() -> (Env, soroban_sdk::Address) {
let e = Env::default();
e.mock_all_auths();
let contract_id = e.register_contract(None, TreasuryContract);
let contract_id = e.register(TreasuryContract, ());
(e, contract_id)
}

Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,12 @@ docker-compose up -d
```

This starts:

- **Soroban Node**: Stellar quickstart (Horizon at `http://localhost:8000`)
- **Redis**: Event consumer backing service (port 6379)

Check service health:

```sh
docker-compose ps
curl http://localhost:8000/health
Expand Down
12 changes: 6 additions & 6 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
If you discover a security vulnerability in the COMEBACKHERE Protocol, please
report it responsibly. **Do not open a public issue.**

Send an email to **security@comebackhere.io** with the following details:
Send an email to **<security@comebackhere.io>** with the following details:

- A description of the vulnerability and its potential impact.
- Step-by-step instructions to reproduce the issue.
Expand All @@ -20,7 +20,7 @@ You may encrypt your report using our PGP key, available at
The following components are in scope for responsible disclosure:

| Component | Repository / Location |
|---|---|
| --- | --- |
| Soroban smart contracts | `COMEBACKHERE-contracts/` and `contracts/` |
| Backend API | `comebackhere-backend` (separate repo) |
| Frontend application | `frontend/` and `comebackhere-frontend/` |
Expand All @@ -38,7 +38,7 @@ The following components are in scope for responsible disclosure:
## Response SLA

| Stage | Timeline |
|---|---|
| --- | --- |
| Acknowledgement of report | Within **48 hours** |
| Initial triage and severity assessment | Within **5 business days** |
| Patch development and internal review | Within **30 days** for critical/high severity |
Expand All @@ -63,7 +63,7 @@ We follow a four-tier severity model:
We offer bounty rewards for verified vulnerabilities based on severity:

| Severity | Reward Range |
|---|---|
| --- | --- |
| Critical | $5,000 – $25,000 |
| High | $2,000 – $5,000 |
| Medium | $500 – $2,000 |
Expand Down Expand Up @@ -95,12 +95,12 @@ authorized. We will not pursue legal action against researchers who:

## Contact

- **Email:** security@comebackhere.io
- **Email:** <security@comebackhere.io>
- **PGP Key:** `https://comebackhere.io/.well-known/pgp-key.txt`

## Supported Versions

| Version | Supported |
|---|---|
| --- | --- |
| Latest on `main` | Yes |
| Previous releases | Best-effort, critical fixes only |
Loading
Loading