plutonium

module
v0.0.0-...-bfae352 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 5, 2025 License: MIT

README

Plutonium NFT Marketplace

Welcome to Plutonium NFT Marketplace, a powerful and feature-rich platform for creating, buying, and selling NFTs (Non-Fungible Tokens).

Develop Installation

Plutonium requires golang v1.23+ to run.

Install the dependencies and devDependencies and start the server.

cd plutonium
docker pull quay.io/goswagger/swagger
alias swagger='docker run --rm -it  --user $(id -u):$(id -g) -e GOPATH=$(go env GOPATH):/go -v $HOME:$HOME -w $(pwd) quay.io/goswagger/swagger'
swagger generate server -A service -P models.Principal -f ./schema/swagger.yml   

Tests

go test -v -coverpkg=./... -coverprofile=coverage.out -covermode=count ./...
go test -race -covermode=atomic -coverprofile=coverage.out ./... &&
go tool cover -func coverage.out | grep total | awk '{print $3}' &&
go tool cover -html="coverage.out"

Make sure your gopath is correct

export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
Install abigen
go get -u github.com/ethereum/go-ethereum
cd $GOPATH/src/github.com/ethereum/go-ethereum/
make
make devtools

Compile contracts

solc --abi contracts/nft/NFT.sol -o contracts/nft/abi --overwrite && \
solc --abi contracts/collection/NFTCollection.sol -o contracts/collection/abi --overwrite && \
solc --abi contracts/marketplace/Marketplace.sol -o contracts/marketplace/abi --overwrite && \
solc --abi contracts/ballot/Ballot.sol -o contracts/ballot/abi --overwrite && \
solc --abi contracts/auction/NFTAuction.sol -o contracts/auction/abi --overwrite

Generate bindings

abigen --abi contracts/nft/abi/NFT.abi --pkg nft --type NFT --out contracts/nft/NFT.go && \
abigen --abi contracts/collection/abi/NFTCollection.abi --pkg collection --type NFTCollection --out contracts/collection/NFTCollection.go && \
abigen --abi contracts/marketplace/abi/Marketplace.abi --pkg marketplace --type Marketplace --out contracts/marketplace/Marketplace.go && \
abigen --abi contracts/ballot/abi/Ballot.abi --pkg ballot --type Ballot --out contracts/ballot/Ballot.go && \
abigen --abi contracts/auction/abi/NFTAuction.abi --pkg auction --type Auction --out contracts/auction/NFTAuction.go

Deploying contracts

solc --bin contracts/nft/NFT.sol -o contracts/nft/bin --overwrite && \
solc --bin contracts/collection/NFTCollection.sol -o contracts/collection/bin --overwrite && \
solc --bin contracts/marketplace/Marketplace.sol -o contracts/marketplace/bin --overwrite && \
solc --bin contracts/ballot/Ballot.sol -o contracts/ballot/bin --overwrite && \
solc --bin contracts/auction/NFTAuction.sol -o contracts/auction/bin --overwrite

# One Command

solc --evm-version paris --abi contracts/nft/NFT.sol -o contracts/nft/abi --overwrite &&
solc --evm-version paris --abi contracts/collection/NFTCollection.sol -o contracts/collection/abi --overwrite &&
solc --evm-version paris --abi contracts/marketplace/Marketplace.sol -o contracts/marketplace/abi --overwrite &&
solc --evm-version paris --abi contracts/ballot/Ballot.sol -o contracts/ballot/abi --overwrite &&
solc --evm-version paris --abi contracts/auction/NFTAuction.sol -o contracts/auction/abi --overwrite &&
abigen --abi contracts/nft/abi/NFT.abi --pkg nft --type NFT --out contracts/nft/NFT.go &&
abigen --abi contracts/collection/abi/NFTCollection.abi --pkg collection --type NFTCollection --out contracts/collection/NFTCollection.go &&
abigen --abi contracts/marketplace/abi/Marketplace.abi --pkg marketplace --type Marketplace --out contracts/marketplace/Marketplace.go &&
abigen --abi contracts/ballot/abi/Ballot.abi --pkg ballot --type Ballot --out contracts/ballot/Ballot.go &&
abigen --abi contracts/auction/abi/NFTAuction.abi --pkg auction --type NFTAuction --out contracts/auction/NFTAuction.go &&
solc --evm-version paris --bin contracts/nft/NFT.sol -o contracts/nft/bin --overwrite &&
solc --evm-version paris --bin contracts/collection/NFTCollection.sol -o contracts/collection/bin --overwrite &&
solc --evm-version paris --bin contracts/marketplace/Marketplace.sol -o contracts/marketplace/bin --overwrite &&
solc --evm-version paris --bin contracts/ballot/Ballot.sol -o contracts/ballot/bin --overwrite &&
solc --evm-version paris --bin contracts/auction/NFTAuction.sol -o contracts/auction/bin --overwrite &&
abigen --abi contracts/nft/abi/NFT.abi --pkg nft --type NFT --out contracts/nft/NFT.go --bin contracts/nft/bin/NFT.bin &&
abigen --abi contracts/collection/abi/NFTCollection.abi --pkg collection --type NFTCollection --out contracts/collection/NFTCollection.go --bin contracts/collection/bin/NFTCollection.bin &&
abigen --abi contracts/marketplace/abi/Marketplace.abi --pkg marketplace --type Marketplace --out contracts/marketplace/Marketplace.go --bin contracts/marketplace/bin/Marketplace.bin &&
abigen --abi contracts/ballot/abi/Ballot.abi --pkg ballot --type Ballot --out contracts/ballot/Ballot.go --bin contracts/ballot/bin/Ballot.bin &&
abigen --abi contracts/auction/abi/NFTAuction.abi --pkg auction --type NFTAuction --out contracts/auction/NFTAuction.go --bin contracts/auction/bin/NFTAuction.bin


### Mocks
```bash
mockgen -source=internal/storage/db/repository/users.go -destination=internal/storage/mocks/users_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/contracts.go -destination=internal/storage/mocks/contracts_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/categories.go -destination=internal/storage/mocks/categories_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/pages.go -destination=internal/storage/mocks/pages_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/menus.go -destination=internal/storage/mocks/menus_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/sliders.go -destination=internal/storage/mocks/sliders_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/files.go -destination=internal/storage/mocks/files_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/authors.go -destination=internal/storage/mocks/authors_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/contacts.go -destination=internal/storage/mocks/contacts_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/contactForms.go -destination=internal/storage/mocks/contactForms_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/faqs.go -destination=internal/storage/mocks/faqs_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/helpCenter.go -destination=internal/storage/mocks/helpCenter_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/blogs.go -destination=internal/storage/mocks/blogs_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/tags.go -destination=internal/storage/mocks/tags_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/wallets.go -destination=internal/storage/mocks/wallets_mock.go -package=mocks
mockgen -source=internal/storage/db/repository/createAndSell.go -destination=internal/storage/mocks/createAndSell_mock.go -package=mocks

mockgen -source=internal/storage/dbstorage.go -destination=internal/storage/mocks/dbstorage_mock.go -package=mocks

Directories

Path Synopsis
cmd
contracts
nft
gen
internal
compressor
Package compressor is a wrapper over gzip writer and reader
Package compressor is a wrapper over gzip writer and reader
hash
The package includes functions to generate RSA keys, export keys to PEM format, import keys from PEM format, encrypt and decrypt messages using RSA, and handle file operations for storing and reading keys.
The package includes functions to generate RSA keys, export keys to PEM format, import keys from PEM format, encrypt and decrypt messages using RSA, and handle file operations for storing and reading keys.
log
otp
plutonium/grpcserver
Package grpcserver provides the implementation of a gRPC server with support for both HTTP/1.1 and HTTP/2.
Package grpcserver provides the implementation of a gRPC server with support for both HTTP/1.1 and HTTP/2.
plutonium/httpclient
Package httpclient is the http client wrapper to make http requests to server Copyright 2024 The Oleg Nazarov.
Package httpclient is the http client wrapper to make http requests to server Copyright 2024 The Oleg Nazarov.
storage/db
Package db contains custom errors for database
Package db contains custom errors for database
storage/db/repository
Package repository contains all database logic for storage
Package repository contains all database logic for storage
storage/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
Package restapi Plutonium Service API
Package restapi Plutonium Service API

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL