-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Misc TODOs, deployment steps, and things from first mainnet run
- Loading branch information
1 parent
491896a
commit 4158410
Showing
18 changed files
with
342 additions
and
22 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package main | ||
|
||
import ( | ||
"flag" | ||
|
||
"github.com/keep-starknet-strange/art-peace/backend/config" | ||
"github.com/keep-starknet-strange/art-peace/backend/core" | ||
"github.com/keep-starknet-strange/art-peace/backend/routes" | ||
"github.com/keep-starknet-strange/art-peace/backend/routes/indexer" | ||
) | ||
|
||
func main() { | ||
canvasConfigFilename := flag.String("canvas-config", config.DefaultCanvasConfigPath, "Canvas config file") | ||
databaseConfigFilename := flag.String("database-config", config.DefaultDatabaseConfigPath, "Database config file") | ||
backendConfigFilename := flag.String("backend-config", config.DefaultBackendConfigPath, "Backend config file") | ||
|
||
flag.Parse() | ||
|
||
canvasConfig, err := config.LoadCanvasConfig(*canvasConfigFilename) | ||
if err != nil { | ||
panic(err) | ||
} | ||
|
||
databaseConfig, err := config.LoadDatabaseConfig(*databaseConfigFilename) | ||
if err != nil { | ||
panic(err) | ||
} | ||
|
||
backendConfig, err := config.LoadBackendConfig(*backendConfigFilename) | ||
if err != nil { | ||
panic(err) | ||
} | ||
|
||
databases := core.NewDatabases(databaseConfig) | ||
defer databases.Close() | ||
|
||
core.ArtPeaceBackend = core.NewBackend(databases, canvasConfig, backendConfig, true) | ||
|
||
routes.InitBaseRoutes() | ||
routes.InitCanvasRoutes() | ||
indexer.InitIndexerRoutes() | ||
indexer.StartMessageProcessor() | ||
|
||
core.ArtPeaceBackend.Start(core.ArtPeaceBackend.BackendConfig.ConsumerPort) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
ART_PEACE_CONTRACT_ADDRESS='0x0384e5fa826e1151715dbc3df0bd1b3aaec234dfc344394d02c39b670e354c48' | ||
CONSUMER_TARGET_URL='http://localhost:8081/consume-indexer-msg' | ||
APIBARA_STREAM_URL='https://mainnet.starknet.a5a.ch' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
package video | ||
|
||
import ( | ||
"context" | ||
"fmt" | ||
"image" | ||
"image/color" | ||
"image/png" | ||
"os" | ||
"strconv" | ||
|
||
"github.com/keep-starknet-strange/art-peace/backend/core" | ||
) | ||
|
||
func GenerateImageFromCanvas(orderId int) { | ||
ctx := context.Background() | ||
|
||
colorWidth := core.ArtPeaceBackend.CanvasConfig.ColorsBitWidth | ||
canvasWidth := int(core.ArtPeaceBackend.CanvasConfig.Canvas.Width) | ||
canvasHeight := int(core.ArtPeaceBackend.CanvasConfig.Canvas.Height) | ||
|
||
// TODO: Make generic & initialize only once | ||
colorPalette := make([]color.RGBA, 0) | ||
colorPaletteHex := []string{"fafafa", "080808", "ba2112", "ff403d", "ff7714", "ffd115", "f5ff05", "199f27", "00ef3f", "152665", "1542ff", "5cfffe", "a13dff", "ff7ad7", "c1d9e6", "ea1608", "1991f4", "3c3c84", "ff5c5d", "fde578", "74401b", "f86949", "46b093", "d4d7d9"} | ||
for _, colorHex := range colorPaletteHex { | ||
r, err := strconv.ParseInt(colorHex[0:2], 16, 64) | ||
if err != nil { | ||
fmt.Println("Failed to parse hex color: ", colorHex, " Error: ", err) | ||
return | ||
} | ||
g, err := strconv.ParseInt(colorHex[2:4], 16, 64) | ||
if err != nil { | ||
fmt.Println("Failed to parse hex color: ", colorHex, " Error: ", err) | ||
return | ||
} | ||
b, err := strconv.ParseInt(colorHex[4:6], 16, 64) | ||
if err != nil { | ||
fmt.Println("Failed to parse hex color: ", colorHex, " Error: ", err) | ||
return | ||
} | ||
colorPalette = append(colorPalette, color.RGBA{uint8(r), uint8(g), uint8(b), 255}) | ||
} | ||
generatedImage := image.NewRGBA(image.Rect(0, 0, canvasWidth, canvasHeight)) | ||
bitfieldType := "u" + strconv.Itoa(int(core.ArtPeaceBackend.CanvasConfig.ColorsBitWidth)) | ||
for y := 0; y < canvasHeight; y++ { | ||
for x := 0; x < canvasWidth; x++ { | ||
position := y*canvasWidth + x | ||
pos := position * int(colorWidth) | ||
val, err := core.ArtPeaceBackend.Databases.Redis.BitField(ctx, "canvas", "GET", bitfieldType, pos).Result() | ||
if err != nil { | ||
fmt.Println("Failed to get bitfield value. Error: ", err) | ||
return | ||
} | ||
color := colorPalette[val[0]] | ||
generatedImage.Set(x, y, color) | ||
} | ||
} | ||
|
||
if _, err := os.Stat("images"); os.IsNotExist(err) { | ||
err := os.Mkdir("images", os.ModePerm) | ||
if err != nil { | ||
fmt.Println("Failed to create images directory. Error: ", err) | ||
return | ||
} | ||
} | ||
|
||
fileName := fmt.Sprintf("images/%d.png", orderId) | ||
f, err := os.Create(fileName) | ||
if err != nil { | ||
fmt.Println("Failed to create image file. Error: ", err) | ||
return | ||
} | ||
defer f.Close() | ||
|
||
if err := png.Encode(f, generatedImage); err != nil { | ||
fmt.Println("Failed to encode image. Error: ", err) | ||
return | ||
} | ||
fmt.Println("Generated image for orderId: ", orderId) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
export const config = { | ||
streamUrl: Deno.env.get("APIBARA_STREAM_URL"), | ||
startingBlock: 650_000, | ||
network: "starknet", | ||
finality: "DATA_STATUS_PENDING", | ||
filter: { | ||
events: [ | ||
{ | ||
// Pixel Placed Event | ||
fromAddress: Deno.env.get("ART_PEACE_CONTRACT_ADDRESS"), | ||
keys: [ | ||
"0x2D7B50EBF415606D77C7E7842546FC13F8ACFBFD16F7BCF2BC2D08F54114C23" | ||
], | ||
includeReverted: false, | ||
includeTransaction: false, | ||
includeReceipt: false | ||
} | ||
] | ||
}, | ||
sinkType: "webhook", | ||
sinkOptions: { | ||
targetUrl: Deno.env.get("CONSUMER_TARGET_URL") | ||
} | ||
}; | ||
|
||
export default function transform(block) { | ||
return block; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
setup .env w/ STARKNET_KEYSTORE=$HOME/.starkli-sepolia/starkli-keystore.json | ||
STARKNET_ACCOUNT=$HOME/.starkli-sepolia/starkli-account.json | ||
|
||
source .env | ||
|
||
build contracts : scarb build | ||
deploy username store to sepolia | ||
./tests/integration/sepolia/deploy-username-store.sh | ||
save address | ||
deploy art peace to sepolia | ||
vim ./tests/integration/sepolia/deploy.sh | ||
change start & end time | ||
./tests/integration/sepolia/deploy.sh | ||
save address | ||
deploy canvas nft to sepolia | ||
./tests/integration/sepolia/deploy-canvas-nft.sh | ||
save address | ||
and set in art_peace contract | ||
deploy quests | ||
vim ./tests/integration/sepolia/deploy_quests.sh | ||
change art peace address, canvas contract address, username store, ... | ||
./tests/integration/sepolia/deploy_quests.sh | ||
|
||
setup nft contract | ||
setup factions | ||
vim ./tests/integration/sepolia/setup_factions.sh | ||
change art-peace contract | ||
./tests/integration/sepolia/setup_factions.sh | ||
|
||
copy abis to frontend | ||
make update-frontend-contracts | ||
|
||
build prod docker images w/ new version & push to docker hub | ||
Update docker version in infra/art-peace-infra/Chart.yaml if needed | ||
Update contracts in values.yaml | ||
commit and merge changes | ||
make docker-build | ||
make docker-push | ||
|
||
apply changes to cloud | ||
cloud console | ||
clone / pull latest main | ||
git clone https://github.com/keep-starknet-strange/art-peace.git | ||
git pull origin main | ||
cd art-peace | ||
If full reset | ||
make helm-uninstall | ||
POSTGRES_PASSWORD=test AUTH_TOKEN=dna_abc make helm-install | ||
make init-infra-prod | ||
else | ||
POSTGRES_PASSWORD=test AUTH_TOKEN=dna_abc make helm-upgrade | ||
|
||
change frontend contract addresses in vercel | ||
https://vercel.com/keep-starknet-strange/art-peace/settings | ||
REACT_APP_STARKNET_CONTRACT_ADDRESS= | ||
REACT_APP_USERNAME_STORE_CONTRACT_ADDRESS= | ||
REACT_APP_CANVAS_NFT_CONTRACT_ADDRESS= | ||
ART_PEACE_END_TIME= | ||
ART_PEACE_HOST= | ||
|
||
|
||
kubectl cp ../postgres/init.sql pod:/home | ||
kubectl exec -it pod/pod-name bash | ||
psql -U art-peace-user -d art-peace-db -f /home/init.sql | ||
reset : | ||
kubectl delete pvc nft-volume-claim redis-volume-claim | ||
kubectl delete deployment.apps/backend deployment.apps/admin-backend deployment.apps/consumer deployment.apps/indexer deployment.apps/redis | ||
|
||
setup canvas, quests, and faction backend | ||
|
||
|
||
|
||
|
||
video: | ||
redis-server | ||
redis-cli del canvas | ||
backend/video/video.go - set color palette | ||
backend/routes/indexer/route.go - add video.GenerateImageFromCanvas(message.Data.Cursor.OrderKey) after LastFinalizedCursor = message.Data.Cursor.OrderKey | ||
go run cmd/video-gen/video.go | ||
curl http://localhost:8081/init-canvas | ||
setup indexer.env for art peace contract | ||
AUTH_TOKEN=dna_abc apibara run indexer/video-script.js --allow-env backend/video/indexer.env | ||
render video from frames in blender |
Oops, something went wrong.