Estoy trabajando en un contrato inteligente en ethereum blockchain. La idea es que usando una cantidad específica de dinero tengo que comprar el máximo número de tokens de dos contratos inteligentes diferentes. Esos dos contratos inteligentes calculan el número de tokens a vender usando dos funciones diferentes.
Contrato 1 - C-ORG de Fairmint.
$$F1(x) = \sqrt{\frac{2x}{b} + a^2} - a$$
donde b y a son valores constantes.
Contrato 2 - Contrato de arrastre de fichas Uniswap.
$$F2(x) = \frac{x*d*997}{g*1000 + x * 997}$$
donde d y g son constantes.
Lo que tengo que hacer es dividir mi cuenta de dinero que tengo entre esos dos contratos para que en total pueda obtener el máximo número de tokens posible de esos dos contratos combinados.
Así que mi entendimiento es que tengo que encontrar un valor máximo de la función $$F3(x) = F1(z) + F(x-z)$$ donde z es la cantidad de dinero gastada en el contrato 1 y $z <= x$ y $z>0$
Así que puedo decir que $$F3(x) = \sqrt{\frac{2z}{b} + a^2} - a + \frac{(x-z)*d*997}{g*1000 + (x-z) * 997} $$
Lo que necesito es encontrar el valor de z, conociendo el valor de x, para el cual esta función dará el máximo resultado.
No soy bueno en el cálculo así que usé Calculadora integral y me ha salido una ecuación como esta: $$\dfrac{1000dg\ln\left(\left|997\left(x-z\right)-1000g\right|\right)}{997}+\dfrac{\left(2x+a^2b\right)^\frac{3}{2}}{3\sqrt{b}}+dx-ax$$
Y ahora entiendo que tengo que encontrar el valor de z donde esta función será igual a cero. ¿No es así? $$\dfrac{1000dg\ln\left(\left|997\left(x-z\right)-1000g\right|\right)}{997}+\dfrac{\left(2x+a^2b\right)^\frac{3}{2}}{3\sqrt{b}}+dx-ax = 0$$
Tengo las siguientes preguntas:
- ¿Es mi pensamiento correcto? ¿Debo hacerlo así?
- ¿Es correcto el resultado del cálculo?
- ¿Cómo puedo estar seguro de que he encontrado el máximo y no el mínimo?
- Cómo puedo simplificar la última función para que sea más fácil de calcular. Estoy trabajando en un lenguaje de codificación ( solidity ) que sólo soporta funciones matemáticas básicas (add,sub,mul,div y operaciones binarias). No tengo nada para $\sqrt a$ o $\ln$
Cualquier ayuda será más que apreciada. Gracias.