Álvaro Carvajal Castro

TeamTime

Lead Developer

go php aws

SaaS application developed using Laravel and Go. Allows remote team local time synchronization and time tracking. Using beanstalk, cloudfront and lambda for the backend.

More than 340 timezones are supported from parsing the zoneinfo database. Accurate times are provided with their offset and daylight savings time.

All timezone data is gathered from the IANA Time Zone Database, which is checked for updates daily. Shapefile with all the timezones is added to the database allowing fast and accurate timezone lookups based on latitude and longitude.

RavenQuest

Lead Blockchain Developer, Backend Developer

go evm solidity

P2E Crypto MMORPG Backend developed using Go. Contracts developed using Hardhat with Solidity. Deployed on Polygon PoS with multi-chain support.

Worked on smart-contracts from the ground up, handling land sales, NFT assets for in-game items, in-game and blockchain integrations. Contracts managed over 300.000 USDC in sales in the first 24 hours. Read more.

Implemented custom secure chain abstraction layer for the backend, allowing the use of encrypted accounts using keyring and HD wallets.

Ravendawn Online

Backend Developer, DevOps

go php aws

MMORPG. Developed multiple backend services for the game including: Website backend developed using Go supporting multiple payment gateways (PayPal, Coinbase, Paylivre). Managed over 1.000.000 monthly requests.

Worked on a small embeddings database for the in-game support bot, using OpenAI's GPT-3 to generate responses to player questions, using context gathered from the distance between the input and any embedding.

Managed proper email delivery using AWS SES, with over 100.000 emails sent monthly. Implemented DMARC, DKIM and SPF to ensure proper email delivery, including the use of SNS to handle bounces and complaints.

Improved game state saving by setting up database multi-source replication for the main game server, enabling hot backups without impacting the game. All backups are encrypted and stored on AWS S3.

Insta Container Modification

Fullstack Developer

go vue

Website backend developed using Go. Payment gateway using Stripe checkout. Reseller panel. Integrated and made from scratch a custom shopping cart system.

Added CMS like functionality to the website, allowing the modification of multiple content sections, including: products, dealers, admin panel, etc. Implemented real-time shipping rates using the UPS API and DayAndRoss API.

Uptime of 99.99% in the last 12 months. Managed over 10.000 monthly requests.

Archlight Online

Backend Developer

go aws

2D MMORPG. Website backend developed using Go. Implemented multiple payment gateways (PayPal, Coinbase, PagSeguro). Multiple content mangement systems for the website, including: news, changelog, support, etc.

Implemented several AWS services, including: SES, S3, and SNS notifications for email bounces and complaints. Worked on several micro-services, including: journal syslog real-time notifications into Discord webhooks.

Faceless Bytecode

Personal Project

blockchain solidity evm

Custom NFT Collection that uses raw bytecode smart-contracts for storing SVG data directly on chain instead of using IPFS or storing the SVG data on the main contract itself. Generating custom smart-contract bytecode in Go.

This implementation allows to save gas when deploying the collection contract since it does not carry any SVG data, instead the data is deployed separately on a different contract, however this contract uses custom bytecode to reduce any uneeeded data, saving gas on the deployment.

CREATE2 Payment Gateway

Personal Project

blockchain solidity go evm

Proof of concept for a payment gateway using the CREATE2 opcode. The payment gateway allows the user to pay for a service using a smart-contract address that does not exist yet. When the user pays for the service, the payment gateway deploys the service contract using the CREATE2 opcode, the deployed contract address is deterministic and can be calculated before the contract is deployed.

The contract implements a drain like functionality, draining everything when deployed and any future payment to that address. This implementation allows to save gas since the contract is only deployed when the user pays for the service. Also it does not have to deal with any account or key management since the contract is deployed by the payment gateway.

SimpleMixer

Masters Thesis, Personal Project

blockchain solidity go evm

Proof of Concept for a centralized Ethereum mixer. Using ECDSA signatures generated by a central server used to validate withdraws. All generated signatures follow the EIP-712 schema.

The mixer approach implements signature checking on the smart-contract side (using ecrecover to get the public key of the signature), allowing the user to withdraw only when the signature was provided by the authorized server. Read more.

This project was done as a part of my Master's Thesis in Cybersecurity and Privacy. More information on the thesis (Spanish) can be found here.

Castro AAC

Personal Project

go lua

Simple CMS like Framework for creating websites for OpenTibia servers. Allows the user to create custom controller logic by using Lua scripts. Bringing the power of Lua to the web with the speed of Go.

The application starts a pool of Lua VMs that are used to execute the controller logic for each request that comes in. A small standard library was created to allow the user to interact with the application, including: database access, session management, request handling, form manipulation, etc.

bison

Personal Project

lua vm go

Proof-of-Concept website framework that allows to use Lua scripts to handle incoming HTTP requests. The framework uses a pool of Lua VMs to execute the controller logic for each request.

The router is a simple .lua file that returns a table with the routes and their respective controller logic.

Much like Castro AAC, this framework allows the user to create custom controller logic by using Lua scripts. However this framework is for general purpose websites, not only for OpenTibia servers.