From 2eeb79458f7c3704f9e1919bb0b0f57e0a07cf57 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Wed, 27 May 2015 04:16:46 +0200 Subject: [PATCH] Better name for the miner: It "mines" for Hubcoins. Signed-off-by: Roland Haeder --- application/hub/config.php | 4 +- .../class_HubcoinRewardFeature.php | 55 +++++++++++++++++-- .../class_MinerPhpRequirementsFilter.php | 2 +- .../node/class_NodePhpRequirementsFilter.php | 2 +- ...bChashMiner.php => class_HubCoinMiner.php} | 8 +-- .../hub/main/package/class_NetworkPackage.php | 16 +++++- core | 2 +- 7 files changed, 73 insertions(+), 16 deletions(-) rename application/hub/main/miner/chash/{class_HubChashMiner.php => class_HubCoinMiner.php} (94%) diff --git a/application/hub/config.php b/application/hub/config.php index f1fd5793e..b4c67a00e 100644 --- a/application/hub/config.php +++ b/application/hub/config.php @@ -920,8 +920,8 @@ $cfg->setConfigEntry('upper_recipient_class', 'UpperRecipient'); // Miner configuration /////////////////////////////////////////////////////////////////////////////// -// CFG: MINER-DEFAULT-MODE (can be only 'chash' at the moment) -$cfg->setConfigEntry('miner_default_mode', 'chash'); +// CFG: MINER-DEFAULT-MODE (can be only 'coin' at the moment) +$cfg->setConfigEntry('miner_default_mode', 'coin'); // CFG: MINER-BUFFER-STACKER-CLASS $cfg->setConfigEntry('miner_buffer_stacker_class', 'FiFoStacker'); diff --git a/application/hub/main/feature/hubcoin_reward/class_HubcoinRewardFeature.php b/application/hub/main/feature/hubcoin_reward/class_HubcoinRewardFeature.php index d1607ac8c..f868dd949 100644 --- a/application/hub/main/feature/hubcoin_reward/class_HubcoinRewardFeature.php +++ b/application/hub/main/feature/hubcoin_reward/class_HubcoinRewardFeature.php @@ -35,10 +35,9 @@ class HubcoinRewardFeature extends BaseFeature implements Feature { /** * Creates an instance of this Feature class and prepares it for usage * - * @param $appInstance A manageable application * @return $featureInstance An instance of this Feature class */ - public final static function createHubcoinRewardFeature (ManageableApplication $appInstance) { + public final static function createHubcoinRewardFeature () { // Get a new instance $featureInstance = new HubcoinRewardFeature(); @@ -52,8 +51,14 @@ class HubcoinRewardFeature extends BaseFeature implements Feature { * @return $isAvailable Whether this feature is available */ public function isFeatureAvailable () { + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: CALLED!', __METHOD__, __LINE__)); + // Testing this feature is pretty simple: - $isAvailable = (($this->getConfigInstance()->getConfigEntry('extension_scrypt_loaded') === 'Y') && (extension_loaded('scrypt')) && (is_callable('scrypt'))); + $isAvailable = (($this->getConfigInstance()->getConfigEntry('extension_scrypt_loaded') === TRUE) && (extension_loaded('scrypt')) && (is_callable('scrypt'))); + + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: isAvailable=%d - EXIT!', __METHOD__, __LINE__, intval($isAvailable))); // Return status return $isAvailable; @@ -62,7 +67,49 @@ class HubcoinRewardFeature extends BaseFeature implements Feature { /** * Feature method 'generateHash' * - * @param + * @param $data Data to hash + * @return $hash Finished hash + */ + public function featureMethodGenerateHash ($data) { + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: data()=%d - CALLED!', __METHOD__, __LINE__, strlen($data))); + + // Make sure the feature is available + assert(FrameworkFeature::isFeatureAvailable('hubcoin_reward')); + + // Call inner class + $hash = Scrypt::hashScrypt($data); + + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: hash=%s - EXIT!', __METHOD__, __LINE__, $hash)); + + // Return generated hash + return $hash; + } + + /** + * Feature method 'checkHash' + * + * @param $data Data to check hash for + * @param $hash Previously generated hash for valdiation + * @return $isValid Whether the given hash matches a new one from given data + */ + public function featureMethodCheckHash ($data, $hash) { + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: data()=%d,hash=%s - CALLED!', __METHOD__, __LINE__, strlen($data), $hash)); + + // Make sure the feature is available + assert(FrameworkFeature::isFeatureAvailable('hubcoin_reward')); + + // Determine it + $isValid = Scrypt::checkScrypt($data, $hash); + + // Debug message + //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput(sprintf('[%s:%d]: isValid=%d - EXIT!', __METHOD__, __LINE__, intval($isValid))); + + // Return status + return $isValid; + } } // [EOF] diff --git a/application/hub/main/filter/miner/class_MinerPhpRequirementsFilter.php b/application/hub/main/filter/miner/class_MinerPhpRequirementsFilter.php index dc490d2ee..918568833 100644 --- a/application/hub/main/filter/miner/class_MinerPhpRequirementsFilter.php +++ b/application/hub/main/filter/miner/class_MinerPhpRequirementsFilter.php @@ -69,7 +69,7 @@ class MinerPhpRequirementsFilter extends BaseMinerFilter implements Filterable { // If scrypt() is not found (ext-scrypt) then the "Hubcoins reward" is not working if ((extension_loaded('scrypt')) && (is_callable('scrypt'))) { // Mark it as working - self::createDebugInstance(__CLASS__)->debugOutput('FILTER[' . __METHOD__ . ':' . __LINE__ . '] ext-scrypt and a callable scrypt() function found. "Hubcoin reward" feature enabled.'); + self::createDebugInstance(__CLASS__)->debugOutput('FILTER[' . __METHOD__ . ':' . __LINE__ . '] ext-scrypt and a callable scrypt() function found. "Hubcoin reward" feature possible.'); $this->getConfigInstance()->setConfigEntry('extension_scrypt_loaded', TRUE); } else { // Not working (not all have ext-scrypt installed diff --git a/application/hub/main/filter/node/class_NodePhpRequirementsFilter.php b/application/hub/main/filter/node/class_NodePhpRequirementsFilter.php index bea3c8662..7cba2b5ca 100644 --- a/application/hub/main/filter/node/class_NodePhpRequirementsFilter.php +++ b/application/hub/main/filter/node/class_NodePhpRequirementsFilter.php @@ -69,7 +69,7 @@ class NodePhpRequirementsFilter extends BaseNodeFilter implements Filterable { // If scrypt() is not found (ext-scrypt) then the "Hubcoins reward" is not working if ((extension_loaded('scrypt')) && (is_callable('scrypt'))) { // Mark it as working - self::createDebugInstance(__CLASS__)->debugOutput('FILTER[' . __METHOD__ . ':' . __LINE__ . '] ext-scrypt and a callable scrypt() function found. "Hubcoin reward" feature enabled.'); + self::createDebugInstance(__CLASS__)->debugOutput('FILTER[' . __METHOD__ . ':' . __LINE__ . '] ext-scrypt and a callable scrypt() function found. "Hubcoin reward" feature possible.'); $this->getConfigInstance()->setConfigEntry('extension_scrypt_loaded', TRUE); } else { // Not working (not all have ext-scrypt installed diff --git a/application/hub/main/miner/chash/class_HubChashMiner.php b/application/hub/main/miner/chash/class_HubCoinMiner.php similarity index 94% rename from application/hub/main/miner/chash/class_HubChashMiner.php rename to application/hub/main/miner/chash/class_HubCoinMiner.php index 7e9f207b6..2b9ddb1d7 100644 --- a/application/hub/main/miner/chash/class_HubChashMiner.php +++ b/application/hub/main/miner/chash/class_HubCoinMiner.php @@ -21,7 +21,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class HubChashMiner extends BaseHubMiner implements MinerHelper, Registerable { +class HubCoinMiner extends BaseHubMiner implements MinerHelper, Registerable { /** * Protected constructor * @@ -40,9 +40,9 @@ class HubChashMiner extends BaseHubMiner implements MinerHelper, Registerable { * * @return $minerInstance An instance of this hub-miner class */ - public final static function createHubChashMiner () { + public final static function createHubCoinMiner () { // Get a new instance - $minerInstance = new HubChashMiner(); + $minerInstance = new HubCoinMiner(); // Return the instance return $minerInstance; @@ -120,7 +120,7 @@ class HubChashMiner extends BaseHubMiner implements MinerHelper, Registerable { public function outputConsoleTeaser () { // Output all lines self::createDebugInstance(__CLASS__)->debugOutput(' '); - self::createDebugInstance(__CLASS__)->debugOutput('Continued Hashing Miner v' . $this->getVersion() . ' is starting ...'); + self::createDebugInstance(__CLASS__)->debugOutput('Hubcoin miner v' . $this->getVersion() . ' is starting ...'); self::createDebugInstance(__CLASS__)->debugOutput('Copyright (c) 2014 Miner Developer Team'); self::createDebugInstance(__CLASS__)->debugOutput(' '); self::createDebugInstance(__CLASS__)->debugOutput('This program comes with ABSOLUTELY NO WARRANTY; for details see docs/COPYING.'); diff --git a/application/hub/main/package/class_NetworkPackage.php b/application/hub/main/package/class_NetworkPackage.php index df534cd3a..4c5dc1b10 100644 --- a/application/hub/main/package/class_NetworkPackage.php +++ b/application/hub/main/package/class_NetworkPackage.php @@ -657,11 +657,12 @@ class NetworkPackage extends BaseHubSystem implements Deliverable, Receivable, R */ private function generatePackageHash ($content, $senderId) { // Debug message - /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: isFeatureAvailable(hubcoin_reward)=' . intval(FrameworkFeature::isFeatureAvailable('hubcoin_reward')) . ' - CALLED!'); + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: content()=' . strlen($content) . ',senderId=' . $senderId . ' - CALLED!'); // Is the feature enabled? if (!FrameworkFeature::isFeatureAvailable('hubcoin_reward')) { // Feature is not enabled + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: Feature "hubcoin_reward" not available, not generating package hash. Returning NULL ...'); return NULL; } // END - if @@ -692,19 +693,28 @@ class NetworkPackage extends BaseHubSystem implements Deliverable, Receivable, R * @todo Unfinished area, hashes are currently NOT fully supported */ private function isPackageHashValid (array $decodedArray) { + // Debug message + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: decodedArray=' . print_r($decodedArray, TRUE) . ' - CALLED!'); + + // Make sure the required array elements are there + assert(isset($decodedArray[self::PACKAGE_CONTENT_SENDER])); + assert(isset($decodedArray[self::PACKAGE_CONTENT_MESSAGE])); + assert(isset($decodedArray[self::PACKAGE_CONTENT_HASH])); + // Is the feature enabled? if (!FrameworkFeature::isFeatureAvailable('hubcoin_reward')) { // Feature is not enabled, so hashes are always valid + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: Feature "hubcoin_reward" not available, not checking hash. Returning TRUE ...'); return TRUE; } // END - if // Check validity - /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: senderId=' . $decodedArray[self::PACKAGE_CONTENT_SENDER] . ',decodedArray=' . print_r($decodedArray, TRUE)); + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: senderId=' . $decodedArray[self::PACKAGE_CONTENT_SENDER] . ',message()=' . strlen($decodedArray[self::PACKAGE_CONTENT_MESSAGE]) . '),hash=' . $decodedArray[self::PACKAGE_CONTENT_HASH]); //* DEBUG-DIE: */ die(__METHOD__ . ': decodedArray=' . print_r($decodedArray, TRUE)); $isHashValid = FrameworkFeature::callFeature('hubcoin_reward', 'checkHash', array($decodedArray[self::PACKAGE_CONTENT_SENDER] . ':' . $decodedArray[self::PACKAGE_CONTENT_MESSAGE] . ':' . $this->determineSenderPrivateKeyHash($decodedArray), $decodedArray[self::PACKAGE_CONTENT_HASH])); // Return it - //* DEBUG-DIE: */ die(__METHOD__ . ': isHashValid=' . intval($isHashValid) . ',decodedArray=' . print_r($decodedArray, TRUE)); + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('NETWORK-PACKAGE[' . __METHOD__ . ':' . __LINE__ . ']: isHashValid=' . intval($isHashValid) . ' - EXIT!'); return $isHashValid; } diff --git a/core b/core index a0551c30b..d320e14f5 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit a0551c30b2e11aadba3f0513ef67c36ca7e60552 +Subproject commit d320e14f5d1103c513e20acad9ce80f79719485c -- 2.39.2