7
7
#include " main.h"
8
8
#include " gridcoin/appcache.h"
9
9
#include " gridcoin/claim.h"
10
+ #include " gridcoin/mrc.h"
10
11
#include " gridcoin/contract/contract.h"
11
12
#include " gridcoin/contract/handler.h"
12
13
#include " gridcoin/beacon.h"
@@ -304,6 +305,7 @@ class Dispatcher
304
305
305
306
private:
306
307
AppCacheContractHandler m_appcache_handler; // <! Temporary.
308
+ MRCContractHandler m_mrc_contract_handler; // <! Simple wrapper to do context validation on MRC transactions.
307
309
UnknownContractHandler m_unknown_handler; // <! Logs unknown types.
308
310
309
311
// !
@@ -324,6 +326,7 @@ class Dispatcher
324
326
case ContractType::PROTOCOL: return m_appcache_handler;
325
327
case ContractType::SCRAPER: return m_appcache_handler;
326
328
case ContractType::VOTE: return GetPollRegistry ();
329
+ case ContractType::MRC: return m_mrc_contract_handler;
327
330
default : return m_unknown_handler;
328
331
}
329
332
}
@@ -765,6 +768,7 @@ Contract::Type Contract::Type::Parse(std::string input)
765
768
// Ordered by frequency:
766
769
if (input == " claim" ) return ContractType::CLAIM;
767
770
if (input == " beacon" ) return ContractType::BEACON;
771
+ if (input == " mrc" ) return ContractType::MRC;
768
772
if (input == " vote" ) return ContractType::VOTE;
769
773
if (input == " poll" ) return ContractType::POLL;
770
774
if (input == " project" ) return ContractType::PROJECT;
@@ -780,6 +784,7 @@ std::string Contract::Type::ToString() const
780
784
switch (m_value) {
781
785
case ContractType::BEACON: return " beacon" ;
782
786
case ContractType::CLAIM: return " claim" ;
787
+ case ContractType::MRC: return " mrc" ;
783
788
case ContractType::MESSAGE: return " message" ;
784
789
case ContractType::POLL: return " poll" ;
785
790
case ContractType::PROJECT: return " project" ;
@@ -856,6 +861,9 @@ ContractPayload Contract::Body::ConvertFromLegacy(const ContractType type) const
856
861
// Claims can only exist in a coinbase transaction and have no
857
862
// legacy representation as a contract:
858
863
assert (false && " Attempted to convert legacy claim contract." );
864
+ case ContractType::MRC:
865
+ // MRCs have no legacy representation as a contract.
866
+ assert (false && " Attempted to convert non-existent legacy MRC contract." );
859
867
case ContractType::MESSAGE:
860
868
// The contract system does not map legacy transaction messages
861
869
// stored in the CTransaction::hashBoinc field:
@@ -891,6 +899,9 @@ void Contract::Body::ResetType(const ContractType type)
891
899
case ContractType::CLAIM:
892
900
m_payload.Reset (new Claim ());
893
901
break ;
902
+ case ContractType::MRC:
903
+ m_payload.Reset (new MRC ());
904
+ break ;
894
905
case ContractType::MESSAGE:
895
906
m_payload.Reset (new TxMessage ());
896
907
break ;
0 commit comments