## 3 System Design
### Architecture  
In ICN, all elements in the network are considered entities, including devices, services, and content. Network services are assigned identifiers, such as in-network caching service [27] and multicast service [35]. Drawing on the experience of this, we consider using user bandwidth for ICN transmission as a service and allocate corresponding UBSID. When a user installs a complete ICN protocol stack locally, they are considered capable of providing ICN packet forwarding functionality. In addition to this, the ICN routers provided by the users also function as blockchain nodes participating in blockchain consensus. Some of these ordinary ICN routers are selected as blockchain consensus nodes to supervise the stability and security of the blockchain system. Figure 3 depicts the architecture of the proposed system. The system consists of two types of nodes. The first is ordinary ICN routers, which are owned by network service providers and have complete ICN network functionality. They are incrementally deployed on top of the existing IP network infrastructure using a hybrid networking approach. The other type of nodes is ICN routers contributed by internet users. These nodes have basic ICN packet processing capabilities and participate in consensus as blockchain nodes. Smart contracts bound to blockchain can securely and automatically measure the contribution of user nodes. For user nodes within the same location resolution domain, we use LNMRS to manage the mapping between the user nodes' NA and UBSID. The LNMRS ensures timely access to user-side resources and reduces the impact of variable paths on network transmission delay [28]. Considering the high dynamism of user nodes, in this architecture, user bandwidth resources are used by treating user nodes as backup nodes for ordinary ICN routing nodes. In general, packet forwarding is based on the shortest path using ordinary ICN nodes. However, in cases of high  
Figure 2: The structure diagram of the name mapping resolution system in ICN. network load or node failure with ordinary ICN nodes, the ID/NA cooperative routing mechanism is used to forward packets through ICN routers contributed by internet users. The overall process of the system is as follows:  
Step 1: User nodes locally install applications such as blockchain, ICN protocol stack, and resource monitoring module and select some ICN ordinary nodes as blockchain nodes. Within a local resolution domain, the controller designates multiple user nodes as backup nodes for a specific ordinary node in the domain, for example, nodes that frequently operate under high load. Then, the controller distributes configuration information, such as ICN overlay routing tables, to the user nodes. Step 2: The user nodes, which serve as backup nodes within the same group, are assigned a UBSID. When a user node comes online, it registers the mapping between UBSID and its own NA with the local resolution system. When the user node goes offline, it deregisters the mapping relationship. Within a local resolution domain, there can be one or multiple UBSIDs present. Step 3: The sender sends the data packet to the ICN edge router. The data is encapsulated with an ICN header to form an ICN data packet. The ICN data packet is then forwarded to the next ICN router based on the Network-Address-based routing. When the ICN packet passes through underlying IP routers, they do not process the ICN packet but only forward it. Step 4: When the network load of an ICN ordinary node becomes too high, it proactively sends notification messages to the upstream ICN ordinary nodes. The upstream ICN ordinary nodes query the local resolution system based on the UBSID. Then, based on node selection policies, they choose a specific user node as the next hop for ICN network transmission. The NA of the data packet is modified to the NA of the selected user node. Step 5: The user node receives the packet and queries the destination NA based on the destination ID. It also consults the local routing table to select the next hop ICN routing node.