public static function setup()
 {
     if (!isset(self::$secp256k1)) {
         self::debug('setup: CurveFp');
         self::$secp256k1 = new CurveFp('115792089237316195423570985008687907853269984665640564039457584007908834671663', '0', '7');
         self::debug('setup: secp256k1:' . print_r(self::$secp256k1, 1));
     }
     if (!isset(self::$secp256k1_G)) {
         self::debug('setup: Point');
         self::$secp256k1_G = new Point(self::$secp256k1, '55066263022277343669578718895168534326250603453777594175500187360389116729240', '32670510020758816978083085130507043184471273380659243275938904335757337482424', '115792089237316195423570985008687907852837564279074904382605163141518161494337');
         self::debug('setup: secp256k1_G: ' . self::$secp256k1_G);
     }
 }